Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/frontend/components/relay/RelayChatPage.vue 32e97c105419d3bcede5c1311df3ffb63b8305a4 (32e97c10) Text, 158.80 KB

T8b949e<!-- SPDX-License-Identifier: 0BSD -->

Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-col flex-1 min-w-0 h-full bg-sem-canvas text-sem-fg"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3rrcEnabledTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex flex-1 flex-col items-center justify-center gap-3 p-8 text-center text-sem-fg-muted"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"forum-off-outline" Te6edf3classTff7b72=Ta5d6ff"size-12 opacity-40" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"max-w-md text-sm"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.disabled_message"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72template Te6edf3v-elseTb4b4b4>
T8b949e<!-- view tabs -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isPopoutModeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-stretch h-9 shrink-0 border-b border-sem-border bg-sem-surface-muted overflow-x-auto"
Te6edf3roleTff7b72=Ta5d6ff"tablist"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3tab Tff7b72in Te6edf3tabsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3tabTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3roleTff7b72=Ta5d6ff"tab"
Tb4b4b4:Te6edf3aria-selectedTff7b72=Ta5d6ff"Te6edf3view Tff7b72=== Te6edf3tabTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center gap-1.5 px-3 sm:px-4 border-r border-sem-border text-sm transition-colors shrink-0"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3view Tff7b72=== Te6edf3tabTb4b4b4.Te6edf3id
Tff7b72? Ta5d6ff'bg-sem-canvas text-sem-fg font-medium'
Tff7b72: Ta5d6ff'text-sem-fg-muted hover:bg-sem-surface/80 dark:hover:bg-sem-surface/30'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3selectViewTb4b4b4(Te6edf3tabTb4b4b4.Te6edf3idTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3tabTb4b4b4.Te6edf3iconTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"size-4 shrink-0 opacity-70" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Te6edf3tabTb4b4b4.Te6edf3labelTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- connect view -->
Tb4b4b4<Tff7b72div Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3view Tff7b72=== Ta5d6ff'chat'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex flex-1 min-w-0 overflow-hidden"Tb4b4b4>
T8b949e<!-- hubs + rooms sidebar -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isPopoutModeTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex-col shrink-0 border-r border-sem-border bg-sem-canvas"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[
Te6edf3selectedRoom Tff7b72? Ta5d6ff'hidden md:flex' Tff7b72: Ta5d6ff'flex'Tb4b4b4,
Te6edf3effectiveSidebarCollapsed Tff7b72? Ta5d6ff'w-16 min-w-16 max-w-16' Tff7b72: Ta5d6ff'w-full md:w-72'Tb4b4b4,
Tb4b4b4]Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex h-10 shrink-0 items-center border-b border-sem-border px-2"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3effectiveSidebarCollapsed Tff7b72? Ta5d6ff'justify-center' Tff7b72: Ta5d6ff'justify-between gap-2'Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3effectiveSidebarCollapsedTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"forum" Te6edf3classTff7b72=Ta5d6ff"size-5 shrink-0 text-sem-accent" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-semibold truncate"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.title"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"rounded-lg p-1.5 text-sem-fg-muted hover:bg-sem-surface/60 dark:hover:bg-sem-surface/30 transition-colors"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"
Te6edf3effectiveSidebarCollapsed
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.expand_sidebar'Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.collapse_sidebar'Tb4b4b4)
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3relaySidebarCollapsed Tff7b72= Tff7b72!Te6edf3relaySidebarCollapsedTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3effectiveSidebarCollapsed Tff7b72? Ta5d6ff'chevron-right' Tff7b72: Ta5d6ff'chevron-left'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-5"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3effectiveSidebarCollapsedTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex flex-1 flex-col items-center gap-1 py-2 px-1"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"rounded-xl p-2 text-sem-fg-muted transition-colors hover:bg-sem-surface/60 hover:text-sem-accent"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.add_hub'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openAddHubTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3hub Tff7b72in Te6edf3hubsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3hubTb4b4b4.Te6edf3hub_hashTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"relative rounded-xl p-2 transition-colors hover:bg-sem-surface/60"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'ring-2 ring-sem-accent'Tff7b72: Te6edf3hubTb4b4b4.Te6edf3hub_hash Tff7b72=== Te6edf3selectedHubHash Tb4b4b4}Ta5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3hubDisplayNameTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3onCollapsedHubClickTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3hubIconNameTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-6"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3statusIconColorTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3statusTb4b4b4)Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showUnreadBadges Tff7b72&& Te6edf3hubTotalUnreadTb4b4b4(Te6edf3hubTb4b4b4) Tff7b72> T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute -top-0.5 -right-0.5 min-w-[14px] rounded-full bg-red-500 px-0.5 text-[9px] font-bold leading-tight text-white"
Tb4b4b4>
Tff7b72{{ Te6edf3formatUnreadBadgeTb4b4b4(Te6edf3hubTotalUnreadTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-else
Te6edf3classTff7b72=Ta5d6ff"flex-1 overflow-y-auto custom-scrollbar p-2 space-y-1.5"
Tb4b4b4@Te6edf3contextmenuTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3openSidebarContextMenuTb4b4b4(Te6edf3$eventTb4b4b4, Tb4b4b4{Tb4b4b4}Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex w-full items-center gap-2 border-b border-sem-border/60 px-2 py-2.5 text-left text-sm text-sem-fg-muted transition-colors hover:bg-sem-surface/40 hover:text-sem-accent"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openAddHubTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-4 shrink-0" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-medium"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.add_hub_card"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3hubTb4b4b4, Te6edf3hubIndexTb4b4b4) Tff7b72in Te6edf3hubsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3hubTb4b4b4.Te6edf3hub_hashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"border-b border-sem-border/60"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'opacity-60'Tff7b72: Te6edf3dragHubIndex Tff7b72=== Te6edf3hubIndex Tb4b4b4}Ta5d6ff"
Te6edf3draggableTff7b72=Ta5d6ff"true"
Tb4b4b4@Te6edf3dragstartTff7b72=Ta5d6ff"Te6edf3onHubDragStartTb4b4b4(Te6edf3hubIndexTb4b4b4, Te6edf3$eventTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3dragoverTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onHubDragOverTb4b4b4(Te6edf3hubIndexTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3dropTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onHubDropTb4b4b4(Te6edf3hubIndexTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3dragendTff7b72=Ta5d6ff"Te6edf3dragHubIndex Tff7b72= Tff7b72nullTa5d6ff"
Tb4b4b4@Te6edf3contextmenuTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3openSidebarContextMenuTb4b4b4(Te6edf3$eventTb4b4b4, Tb4b4b4{ Te6edf3hub Tb4b4b4}Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex w-full items-center gap-2 px-3 py-2.5 text-left transition-colors hover:bg-sem-surface/60 dark:hover:bg-sem-surface/30"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{
Ta5d6ff'bg-sem-surface/70 dark:bg-sem-surface/25'Tff7b72: Te6edf3hubTb4b4b4.Te6edf3hub_hash Tff7b72=== Te6edf3selectedHubHashTb4b4b4,
Tb4b4b4}Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleHubTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3isExpandedTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4) Tff7b72? Ta5d6ff'chevron-down' Tff7b72: Ta5d6ff'chevron-right'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-4 shrink-0 text-sem-fg-muted"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3hubIconNameTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-5 shrink-0"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3statusIconColorTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3statusTb4b4b4)Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0 flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"truncate font-medium leading-tight"Tb4b4b4>Tff7b72{{ Te6edf3hubDisplayNameTb4b4b4(Te6edf3hubTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"truncate text-xs" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3statusTextColorTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3statusTb4b4b4)Ta5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3statusLabelTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3statusTb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showUnreadBadges Tff7b72&& Te6edf3hubTotalUnreadTb4b4b4(Te6edf3hubTb4b4b4) Tff7b72> T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"shrink-0 min-w-[1.25rem] rounded-full bg-red-500 px-1.5 py-0.5 text-center text-xs font-bold text-white"
Tb4b4b4>
Tff7b72{{ Te6edf3formatUnreadBadgeTb4b4b4(Te6edf3hubTotalUnreadTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3isExpandedTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"border-t border-sem-border/50 px-2 py-2 space-y-2"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex w-full items-center gap-1.5 px-1 font-mono text-xs text-sem-fg-muted hover:text-sem-accent"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.copy_hash'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3copyHashTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-3.5 shrink-0" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"truncate"Tb4b4b4>Tff7b72{{ Te6edf3formatHashTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3hubTb4b4b4.Te6edf3connectedTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[Te6edf3btnPrimaryTb4b4b4, Ta5d6ff'flex-1 !py-1.5 !text-xs'Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3connectHubTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"lan-connect" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.connect"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-else
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[Te6edf3btnSecondaryTb4b4b4, Ta5d6ff'flex-1 !py-1.5 !text-xs'Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3disconnectHubTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"lan-disconnect" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.disconnect"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnIconSmTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.settings'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3openSettingsTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"cog" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnDangerSmTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.remove_hub'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3removeHubTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"trash-can-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72ul Te6edf3classTff7b72=Ta5d6ff"space-y-0"Tb4b4b4>
Tb4b4b4<Tff7b72li
Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3roomNameTb4b4b4, Te6edf3roomIndexTb4b4b4) Tff7b72in Te6edf3orderedRoomsForTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3roomNameTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between gap-2 px-2 py-1 text-sm cursor-pointer transition-colors hover:bg-sem-surface/60 dark:hover:bg-sem-surface/30"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{
Ta5d6ff'bg-sem-action-primary/15 text-sem-accent font-medium'Tff7b72:
Te6edf3hubTb4b4b4.Te6edf3hub_hash Tff7b72=== Te6edf3selectedHubHash Tff7b72&& Te6edf3roomName Tff7b72=== Te6edf3selectedRoomTb4b4b4,
Ta5d6ff'opacity-60'Tff7b72:
Te6edf3dragRoomHubHash Tff7b72=== Te6edf3hubTb4b4b4.Te6edf3hub_hash Tff7b72&& Te6edf3dragRoomIndex Tff7b72=== Te6edf3roomIndexTb4b4b4,
Tb4b4b4}Ta5d6ff"
Tb4b4b4:Te6edf3draggableTff7b72=Ta5d6ff"Te6edf3orderedRoomsForTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72> T79c0ff1Ta5d6ff"
Tb4b4b4@Te6edf3dragstartTff7b72=Ta5d6ff"Te6edf3onRoomDragStartTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomIndexTb4b4b4, Te6edf3$eventTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3dragoverTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onRoomDragOverTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomIndexTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3dropTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onRoomDropTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomIndexTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3dragendTff7b72=Ta5d6ff"Te6edf3onRoomDragEndTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3selectRoomTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4, Te6edf3roomNameTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3contextmenuTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3openSidebarContextMenuTb4b4b4(Te6edf3$eventTb4b4b4, Tb4b4b4{ Te6edf3hubTb4b4b4, Te6edf3roomTff7b72: Te6edf3roomName Tb4b4b4}Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"flex min-w-0 items-center gap-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"pound"
Te6edf3classTff7b72=Ta5d6ff"size-3.5 shrink-0 opacity-60"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"truncate"Tb4b4b4>Tff7b72{{ Te6edf3roomName Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showUnreadBadges Tff7b72&& Te6edf3roomUnreadCountTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomNameTb4b4b4) Tff7b72> T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"shrink-0 min-w-[1.125rem] rounded-full bg-red-500 px-1 text-center text-[10px] font-bold leading-4 text-white"
Tb4b4b4>
Tff7b72{{ Te6edf3formatUnreadBadgeTb4b4b4(Te6edf3roomUnreadCountTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomNameTb4b4b4)Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tff7b72li
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3orderedRoomsForTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72=== T79c0ff0 Tff7b72&& Te6edf3availableRoomsForTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-2.5 py-1 text-xs text-sem-fg-muted"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.no_rooms"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ulTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hubTb4b4b4.Te6edf3connected Tff7b72|| Te6edf3availableRoomsForTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-0.5"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex w-full items-center gap-1 px-2.5 pt-1 text-[10px] font-semibold uppercase tracking-wide text-sem-fg-muted"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex min-w-0 flex-1 items-center gap-1 text-left transition-colors hover:text-sem-fg"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3toggleAvailableRoomsTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"
Te6edf3isAvailableRoomsExpandedTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4)
Tff7b72? Ta5d6ff'chevron-down'
Tff7b72: Ta5d6ff'chevron-right'
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-3.5 shrink-0"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"truncate"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.available_rooms"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"inline-flex size-5 shrink-0 items-center justify-center rounded-md text-sem-fg-muted transition-colors hover:bg-sem-surface/60 hover:text-sem-accent disabled:cursor-not-allowed disabled:opacity-40"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3hubTb4b4b4.Te6edf3connected Tff7b72|| Te6edf3isRefreshingAvailableRoomsTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.refresh_available_rooms'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3refreshAvailableRoomsTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"refresh"
Te6edf3classTff7b72=Ta5d6ff"size-3.5"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{
Ta5d6ff'animate-spin'Tff7b72: Te6edf3isRefreshingAvailableRoomsTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4)Tb4b4b4,
Tb4b4b4}Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72ul Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3isAvailableRoomsExpandedTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4)Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-0.5"Tb4b4b4>
Tb4b4b4<Tff7b72li
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3availableRoom Tff7b72in Te6edf3availableRoomsForTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3availableRoomTb4b4b4.Te6edf3nameTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3availableRoomTb4b4b4.Te6edf3topic Tff7b72|| Ta5d6ff''Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between gap-2 rounded-lg px-2.5 py-1.5 text-sm cursor-pointer text-sem-fg-muted transition-colors hover:bg-sem-surface/60 dark:hover:bg-sem-surface/30"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3joinAvailableRoomTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3availableRoomTb4b4b4.Te6edf3nameTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"flex min-w-0 items-center gap-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"pound"
Te6edf3classTff7b72=Ta5d6ff"size-3.5 shrink-0 opacity-40"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"truncate"Tb4b4b4>Tff7b72{{ Te6edf3availableRoomTb4b4b4.Te6edf3name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"inline-flex size-6 shrink-0 items-center justify-center rounded-md text-sem-fg-muted transition-colors hover:bg-sem-surface/60 hover:text-sem-accent"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.join'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3stopTff7b72=Ta5d6ff"Te6edf3joinAvailableRoomTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3availableRoomTb4b4b4.Te6edf3nameTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-3.5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ulTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72form Te6edf3classTff7b72=Ta5d6ff"flex flex-col gap-1" Tb4b4b4@Te6edf3submitTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3joinRoomTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3joinRoomNameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.join_room_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"min-w-0 flex-1 border border-sem-border bg-sem-canvas px-2 py-1 text-xs text-sem-fg outline-none focus:border-sem-accent focus:ring-1 focus:ring-sem-accent/30"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"submit"
Te6edf3classTff7b72=Ta5d6ff"inline-flex size-7 shrink-0 items-center justify-center rounded-md text-sem-fg-muted transition-colors hover:bg-sem-surface/60 hover:text-sem-accent"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.join_room'Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3joinRoomKeyTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"password"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.join_room_key_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3autocompleteTff7b72=Ta5d6ff"off"
Te6edf3classTff7b72=Ta5d6ff"w-full border border-sem-border bg-sem-canvas px-2 py-1 text-xs text-sem-fg outline-none focus:border-sem-accent focus:ring-1 focus:ring-sem-accent/30"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72formTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- conversation pane -->
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex min-h-0 flex-1 min-w-0 flex-col overflow-hidden bg-sem-canvas md:flex"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3selectedRoom Tff7b72? Ta5d6ff'flex' Tff7b72: Ta5d6ff'hidden md:flex'Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedHub Tff7b72&& Te6edf3selectedRoomTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between gap-3 px-2 py-2.5 border-b border-sem-border bg-sem-canvas sm:px-3"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex min-w-0 items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"md:hidden rounded-lg p-1.5 text-sem-fg-muted hover:bg-sem-surface/60 dark:hover:bg-sem-surface/30"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.back'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3selectedRoom Tff7b72= Tff7b72nullTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"arrow-left" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"pound" Te6edf3classTff7b72=Ta5d6ff"size-5 shrink-0 text-sem-accent" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-semibold truncate leading-tight"Tb4b4b4>Tff7b72{{ Te6edf3selectedRoom Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"text-xs text-sem-fg-muted truncate"Tb4b4b4>Tff7b72{{ Te6edf3hubDisplayNameTb4b4b4(Te6edf3selectedHubTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1.5 shrink-0"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnIconTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.search_messages'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showSearch Tff7b72= Tff7b72!Te6edf3showSearchTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"magnify" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3smUpTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3data-testidTff7b72=Ta5d6ff"relay-popout"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnIconTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.popout_channel'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3popoutChannelTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"open-in-new" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3showMembers Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.hide_members'Tb4b4b4) Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.show_members'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center gap-1 rounded-lg border px-2 py-1.5 text-sm font-medium transition"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3showMembers
Tff7b72? Ta5d6ff'border-sem-action-primary bg-sem-action-primary/15 text-sem-accent'
Tff7b72: Ta5d6ff'border-sem-border bg-sem-canvas text-sem-fg hover:bg-sem-surface/60 dark:hover:bg-sem-surface/30'
Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showMembers Tff7b72= Tff7b72!Te6edf3showMembersTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"account-group" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"text-xs font-semibold"Tb4b4b4>Tff7b72{{ Te6edf3onlineMembersTb4b4b4.Te6edf3length Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnIconTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.clear_messages'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3clearMessagesTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"broom" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnDangerTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.leave_room'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3leaveRoomTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"exit-to-app" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedHub Tff7b72&& Te6edf3selectedHubTb4b4b4.Te6edf3motd Tff7b72&& Te6edf3selectedRoomTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-start gap-2 px-3 py-2 text-xs border-b border-sem-border bg-sem-canvas text-sem-fg-secondary"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"information-outline"
Te6edf3classTff7b72=Ta5d6ff"size-4 shrink-0 mt-0.5 text-sem-accent"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72spanTb4b4b4>Tff7b72{{ Te6edf3selectedHubTb4b4b4.Te6edf3motd Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative flex flex-1 min-h-0 overflow-hidden"Tb4b4b4>
T8b949e<!-- messages -->
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-1 min-w-0 flex-col min-h-0"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3refTff7b72=Ta5d6ff"messageList"
Te6edf3classTff7b72=Ta5d6ff"relative flex-1 overflow-y-auto custom-scrollbar p-3 sm:p-4"
Te6edf3styleTff7b72=Ta5d6ff"overflow-anchor: none"
Tb4b4b4@Te6edf3scrollTff7b72=Ta5d6ff"Te6edf3onMessagesScrollTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3selectedRoomTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"h-full flex flex-col items-center justify-center gap-2 text-center text-sem-fg-muted"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"chat-outline" Te6edf3classTff7b72=Ta5d6ff"size-10 opacity-40" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.no_room_selected"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-else
Te6edf3classTff7b72=Ta5d6ff"relative min-w-0"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3useVirtualMessageList Tff7b72? Ta5d6ff'' Tff7b72: Ta5d6ff'space-y-1.5'Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-showTff7b72=Ta5d6ff"Tff7b72!Te6edf3isLoadingPrevious Tff7b72&& Te6edf3hasMorePreviousTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"absolute top-0 left-1/2 z-20 -translate-x-1/2 flex items-center gap-1.5 rounded-full border border-sem-border bg-sem-canvas/95 px-3 py-1 text-xs font-medium text-sem-fg-secondary shadow-xs backdrop-blur-sm hover:bg-sem-surface/60"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3loadPreviousMessagesTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"arrow-up" Te6edf3classTff7b72=Ta5d6ff"size-3.5" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.load_previous"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3useVirtualMessageListTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72template
Te6edf3v-forTff7b72=Ta5d6ff"Tb4b4b4(Te6edf3entryTb4b4b4, Te6edf3entryIndexTb4b4b4) Tff7b72in Te6edf3messageTimelineTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3timelineEntryKeyTb4b4b4(Te6edf3entryTb4b4b4, Te6edf3entryIndexTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72RelayMessageEntry Tb4b4b4:Te6edf3entryTff7b72=Ta5d6ff"Te6edf3entryTa5d6ff" Tb4b4b4:Te6edf3pageTff7b72=Ta5d6ff"Te6edf3relayChatPageSelfTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72RelayMessageListVirtual
Te6edf3v-else
Te6edf3refTff7b72=Ta5d6ff"messageListVirtual"
Tb4b4b4:Te6edf3entriesTff7b72=Ta5d6ff"Te6edf3messageTimelineTa5d6ff"
Tb4b4b4:Te6edf3get-scroll-elementTff7b72=Ta5d6ff"Te6edf3getMessagesScrollElementTa5d6ff"
Tb4b4b4:Te6edf3pageTff7b72=Ta5d6ff"Te6edf3relayChatPageSelfTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72form
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3selectedHub Tff7b72&& Te6edf3selectedRoomTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 p-2.5 border-t border-sem-border bg-sem-canvas"
Tb4b4b4@Te6edf3submitTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3sendMessageTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3refTff7b72=Ta5d6ff"composerInput"
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3composerTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3maxlengthTff7b72=Ta5d6ff"Te6edf3selectedHubTb4b4b4.Te6edf3max_msg_body_bytes Tff7b72|| T79c0ff350Ta5d6ff"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.message_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"submit"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[Te6edf3btnPrimaryTb4b4b4, Ta5d6ff'shrink-0 !p-2.5'Tb4b4b4]Ta5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.send'Tb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3composerTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Te6edf3sendingTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"send" Te6edf3classTff7b72=Ta5d6ff"size-5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72formTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- members panel -->
Tb4b4b4<Tff7b72div
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3showMembers Tff7b72&& Te6edf3selectedRoomTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-y-0 right-0 z-40 flex w-72 max-w-[min(18rem,100%)] min-h-0 flex-col border-l border-sem-border bg-sem-canvas shadow-xl md:static md:z-auto md:max-w-none md:w-72 md:shadow-none"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex shrink-0 items-center justify-between gap-2 border-b border-sem-border px-3 py-2.5"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1.5 font-semibold"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"account-group" Te6edf3classTff7b72=Ta5d6ff"size-4 text-sem-accent" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.members_title"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"rounded-lg p-1 text-sem-fg-muted hover:bg-sem-surface/60 dark:hover:bg-sem-surface/30"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.hide_members'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showMembers Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"shrink-0 border-b border-sem-border p-2"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3membersSearchTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"search"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.members_search_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field !py-1.5 !text-xs"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-h-0 flex-1 overflow-y-auto custom-scrollbar p-2 space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"px-1 pb-1 text-xs font-semibold uppercase tracking-wide text-sem-fg-muted"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.members_online"Tb4b4b4) Tff7b72}} (Tff7b72{{ Te6edf3filteredOnlineMembersTb4b4b4.Te6edf3length Tff7b72}})
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72ul Te6edf3classTff7b72=Ta5d6ff"space-y-0.5"Tb4b4b4>
Tb4b4b4<Tff7b72li
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3m Tff7b72in Te6edf3filteredOnlineMembersTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3mTb4b4b4.Te6edf3hashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex cursor-pointer items-center gap-2 rounded-lg px-2 py-1.5 text-sm hover:bg-sem-surface/60 dark:hover:bg-sem-surface/30"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3mTb4b4b4.Te6edf3hashTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3insertMentionTb4b4b4(Te6edf3mTb4b4b4.Te6edf3nameTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"size-2 shrink-0 rounded-full bg-sem-success"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"truncate" Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3colorTff7b72: Te6edf3colorForHashTb4b4b4(Te6edf3mTb4b4b4.Te6edf3hashTb4b4b4) Tb4b4b4}Ta5d6ff"Tb4b4b4>Tff7b72{{
Te6edf3mTb4b4b4.Te6edf3name
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ulTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3filteredOfflineMembersTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"px-1 pb-1 text-xs font-semibold uppercase tracking-wide text-sem-fg-muted"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.members_offline"Tb4b4b4) Tff7b72}} (Tff7b72{{ Te6edf3filteredOfflineMembersTb4b4b4.Te6edf3length Tff7b72}})
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72ul Te6edf3classTff7b72=Ta5d6ff"space-y-0.5"Tb4b4b4>
Tb4b4b4<Tff7b72li
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3m Tff7b72in Te6edf3filteredOfflineMembersTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3mTb4b4b4.Te6edf3hashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2 rounded-lg px-2 py-1.5 text-sm opacity-60"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3mTb4b4b4.Te6edf3hashTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"size-2 shrink-0 rounded-full bg-sem-fg-muted"Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"truncate"Tb4b4b4>Tff7b72{{ Te6edf3mTb4b4b4.Te6edf3name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ulTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"
Te6edf3membersSearchTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72&&
Te6edf3filteredOnlineMembersTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0 Tff7b72&&
Te6edf3filteredOfflineMembersTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0
Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-2 py-4 text-center text-xs text-sem-fg-muted"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.members_search_no_results"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3onlineMembersTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0 Tff7b72&& Te6edf3offlineMembersTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-2 py-4 text-center text-xs text-sem-fg-muted"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.no_members"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showMembers Tff7b72&& Te6edf3selectedRoomTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 z-30 bg-black/40 md:hidden"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showMembers Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- search panel -->
Tb4b4b4<Tff7b72div
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3showSearch Tff7b72&& Te6edf3selectedRoomTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-y-0 right-0 z-40 flex w-80 max-w-[min(20rem,100%)] min-h-0 flex-col border-l border-sem-border bg-sem-canvas shadow-xl md:static md:z-auto md:max-w-none md:w-80 md:shadow-none"
Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex shrink-0 items-center justify-between gap-2 border-b border-sem-border px-3 py-2.5"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-1.5 font-semibold"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"magnify" Te6edf3classTff7b72=Ta5d6ff"size-4 text-sem-accent" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.search_messages"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"rounded-lg p-1 text-sem-fg-muted hover:bg-sem-surface/60"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showSearch Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"close" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"shrink-0 border-b border-sem-border p-2"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3messageSearchTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.search_messages_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field !py-1.5 !text-xs"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-h-0 flex-1 overflow-y-auto custom-scrollbar p-2 space-y-1"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3messageSearchTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-center gap-2 px-3 py-8 text-center text-xs text-sem-fg-muted"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"magnify" Te6edf3classTff7b72=Ta5d6ff"size-8 opacity-40" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"font-medium text-sem-fg-secondary"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.search_empty_hint"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"leading-relaxed"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.search_syntax_hint"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-else-ifTff7b72=Ta5d6ff"Te6edf3searchResultsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-2 py-4 text-center text-xs text-sem-fg-muted"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.search_no_results"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3msg Tff7b72in Te6edf3searchResultsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Ta5d6ff'search-' Tff7b72+ Te6edf3messageKeyTb4b4b4(Te6edf3msgTb4b4b4)Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"w-full rounded-lg px-2 py-1.5 text-left text-xs hover:bg-sem-surface/60"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3scrollToMessageTb4b4b4(Te6edf3msgTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-semibold" Tb4b4b4:Te6edf3styleTff7b72=Ta5d6ff"Te6edf3nameStyleTb4b4b4(Te6edf3msgTb4b4b4)Ta5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3displayNameTb4b4b4(Te6edf3msgTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"ml-1 text-sem-fg-muted"Tb4b4b4>Tff7b72{{ Te6edf3formatTimeTb4b4b4(Te6edf3msgTb4b4b4.Te6edf3tsTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"truncate text-sem-fg-secondary"Tb4b4b4>Tff7b72{{ Te6edf3msgTb4b4b4.Te6edf3text Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showSearch Tff7b72&& Te6edf3selectedRoomTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"absolute inset-0 z-30 bg-black/40 md:hidden"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showSearch Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- discovery view -->
Tb4b4b4<Tff7b72div Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3view Tff7b72=== Ta5d6ff'discovery'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex-1 overflow-y-auto custom-scrollbar p-3 sm:p-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mx-auto w-full max-w-3xl space-y-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-start justify-between gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.discovery_title"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-sem-fg-muted"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.discovery_subtitle"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnSecondaryTa5d6ff"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3discoveryLoadingTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3refreshDiscoveredTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"refresh"
Te6edf3classTff7b72=Ta5d6ff"size-4"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4{ Ta5d6ff'animate-spin'Tff7b72: Te6edf3discoveryLoading Tb4b4b4}Ta5d6ff"
Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.refresh"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"relative"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"magnify"
Te6edf3classTff7b72=Ta5d6ff"pointer-events-none absolute left-3 top-1/2 size-4 -translate-y-1/2 text-sem-fg-muted"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3discoverySearchTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.discovery_search'Tb4b4b4, Tb4b4b4{ Te6edf3countTff7b72: Te6edf3discoveredTb4b4b4.Te6edf3length Tb4b4b4}Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field !pl-9"
Tb4b4b4@Te6edf3inputTff7b72=Ta5d6ff"Te6edf3onDiscoverySearchTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3discoveredTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-center gap-2 rounded-xl border border-sem-border bg-sem-canvas p-8 text-center text-sm text-sem-fg-muted"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"radar" Te6edf3classTff7b72=Ta5d6ff"size-10 opacity-40" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.discovery_empty"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3node Tff7b72in Te6edf3discoveredTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3nodeTb4b4b4.Te6edf3destination_hashTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-center justify-between gap-3 rounded-xl border border-sem-border bg-sem-canvas p-4 transition-colors hover:border-sem-border-strong"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0 flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Te6edf3icon-nameTff7b72=Ta5d6ff"forum-outline"
Te6edf3classTff7b72=Ta5d6ff"size-4 shrink-0 text-sem-accent"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"truncate font-semibold"Tb4b4b4>Tff7b72{{ Te6edf3nodeNameTb4b4b4(Te6edf3nodeTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"mt-1 flex items-center gap-1.5 font-mono text-xs text-sem-fg-muted hover:text-sem-accent"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.copy_hash'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyHashTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3destination_hashTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-3.5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"truncate"Tb4b4b4>Tff7b72{{ Te6edf3formatHashTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3destination_hashTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"mt-1 flex flex-wrap items-center gap-x-3 gap-y-0.5 text-xs text-sem-fg-muted"
Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"clock-outline" Te6edf3classTff7b72=Ta5d6ff"size-3.5" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.announced_ago"Tb4b4b4, Tb4b4b4{ Te6edf3timeTff7b72: Te6edf3timeAgoTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3updated_atTb4b4b4) Tb4b4b4}Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3nodeTb4b4b4.Te6edf3hops Tff7b72!= Tff7b72nullTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"transit-connection-variant" Te6edf3classTff7b72=Ta5d6ff"size-3.5" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hops_away"Tb4b4b4, Tb4b4b4{ Te6edf3countTff7b72: Te6edf3nodeTb4b4b4.Te6edf3hops Tb4b4b4}Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3isHubAddedTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3destination_hashTb4b4b4)Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnSecondaryTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openDiscoveredTb4b4b4(Te6edf3nodeTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"open-in-app" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.discovery_open"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3v-else Te6edf3typeTff7b72=Ta5d6ff"button" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnPrimaryTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3addFromDiscoveryTb4b4b4(Te6edf3nodeTb4b4b4)Ta5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.discovery_add"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- host view -->
Tb4b4b4<Tff7b72div Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3view Tff7b72=== Ta5d6ff'host'Ta5d6ff" Te6edf3classTff7b72=Ta5d6ff"flex min-h-0 flex-1 flex-col overflow-hidden"Tb4b4b4>
Tb4b4b4<Tff7b72RelayHostModerationPage
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hostModerationTb4b4b4.Te6edf3hubTa5d6ff"
Tb4b4b4:Te6edf3hubTff7b72=Ta5d6ff"Te6edf3hostModerationTb4b4b4.Te6edf3hubTa5d6ff"
Tb4b4b4:Te6edf3initial-tabTff7b72=Ta5d6ff"Te6edf3hostModerationTb4b4b4.Te6edf3tabTa5d6ff"
Tb4b4b4:Te6edf3room-filterTff7b72=Ta5d6ff"Te6edf3hostModerationTb4b4b4.Te6edf3roomTa5d6ff"
Tb4b4b4@Te6edf3backTff7b72=Ta5d6ff"Te6edf3closeHostModerationTa5d6ff"
Tb4b4b4@Te6edf3refreshTff7b72=Ta5d6ff"Te6edf3fetchServersTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-else Te6edf3classTff7b72=Ta5d6ff"flex-1 overflow-y-auto custom-scrollbar p-3 sm:p-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"mx-auto w-full max-w-3xl space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-start justify-between gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"text-lg font-semibold"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_title"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-sem-fg-muted"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_subtitle"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnPrimaryTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openCreateHubTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"plus" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.create_hub"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3serverHubsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"flex flex-col items-center gap-2 rounded-xl border border-sem-border bg-sem-canvas p-8 text-center text-sm text-sem-fg-muted"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"server-network-off" Te6edf3classTff7b72=Ta5d6ff"size-10 opacity-40" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.no_hosted_hubs"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3hub Tff7b72in Te6edf3serverHubsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3hubTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"rounded-xl border border-sem-border bg-sem-canvas p-4 space-y-3"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-start justify-between gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0 flex-1"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"size-2 shrink-0 rounded-full"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3hubTb4b4b4.Te6edf3running Tff7b72? Ta5d6ff'bg-sem-success' Tff7b72: Ta5d6ff'bg-sem-fg-muted'Ta5d6ff"
Tb4b4b4>Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-semibold truncate"Tb4b4b4>Tff7b72{{ Te6edf3hubTb4b4b4.Te6edf3name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"mt-1 flex items-center gap-1.5 text-xs font-mono text-sem-fg-muted hover:text-sem-accent"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.copy_hash'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyHashTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3dest_hashTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"content-copy" Te6edf3classTff7b72=Ta5d6ff"size-3.5" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"truncate"Tb4b4b4>Tff7b72{{ Te6edf3formatHashTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3dest_hashTb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex shrink-0 items-center gap-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3isHubAddedTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3dest_hashTb4b4b4)Ta5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnIconTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.host_join_as_client'Tb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3hubTb4b4b4.Te6edf3running Tff7b72|| Tff7b72!Te6edf3hubTb4b4b4.Te6edf3dest_hashTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3joinHostedAsClientTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"login" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-else
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnIconTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.host_leave_as_client'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3leaveHostedAsClientTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"logout" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnIconTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.share_hub'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3shareHubLinkTb4b4b4(Tb4b4b4{ Te6edf3hub_hashTff7b72: Te6edf3hubTb4b4b4.Te6edf3dest_hashTb4b4b4, Te6edf3nameTff7b72: Te6edf3hubTb4b4b4.Te6edf3name Tb4b4b4}Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"share-variant" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3hubTb4b4b4.Te6edf3runningTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[Te6edf3btnSecondaryTb4b4b4, Ta5d6ff'!px-2.5 !py-1.5 !text-xs'Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3startServerHubTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"play" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_start"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-else
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[Te6edf3btnSecondaryTb4b4b4, Ta5d6ff'!px-2.5 !py-1.5 !text-xs'Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3stopServerHubTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"stop" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_stop"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnIconTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.host_hub_settings'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openHostHubSettingsTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"cog" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnIconTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.host_announce'Tb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Tff7b72!Te6edf3hubTb4b4b4.Te6edf3runningTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3announceServerHubTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"bullhorn-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnDangerTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.host_delete'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3deleteServerHubTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"trash-can-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-center gap-x-4 gap-y-1 text-xs text-sem-fg-muted"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"account-group" Te6edf3classTff7b72=Ta5d6ff"size-3.5" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3hubTb4b4b4.Te6edf3clients Tff7b72}} Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_users"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"pound" Te6edf3classTff7b72=Ta5d6ff"size-3.5" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3hubTb4b4b4.Te6edf3roomsTb4b4b4.Te6edf3length Tff7b72}} Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_rooms"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hubTb4b4b4.Te6edf3runningTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"inline-flex items-center gap-1"Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"clock-outline" Te6edf3classTff7b72=Ta5d6ff"size-3.5" Tb4b4b4/Tb4b4b4>
Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_moderation_uptime"Tb4b4b4, Tb4b4b4{
Te6edf3timeTff7b72: Te6edf3formatUptimeTb4b4b4(Te6edf3hostedHubUptimeSecondsTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[Te6edf3btnSecondaryTb4b4b4, Ta5d6ff'w-full !py-2 !text-xs'Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openHostModerationTb4b4b4(Te6edf3hubTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"shield-account" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_moderate"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- create hub dialog -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showCreateHubTa5d6ff" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3RELAY_HOST_MODAL_OVERLAYTa5d6ff" Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3showCreateHub Tff7b72= Tff7b72falseTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3RELAY_HOST_MODAL_PANEL_COMPACTTa5d6ff" @Te6edf3click.Te6edf3stopTb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"mb-4 text-lg font-semibold text-sem-fg"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.create_hub_title"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72form Te6edf3classTff7b72=Ta5d6ff"space-y-4" Tb4b4b4@Te6edf3submitTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3createServerHubTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-sm font-semibold text-sem-fg-secondary"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hub_name"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3createHubFormTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.hub_name_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-sm font-semibold text-sem-fg-secondary"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_greeting"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3createHubFormTb4b4b4.Te6edf3greetingTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.host_greeting_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"setting-toggle flex items-start gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"rrc-create-announce" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3createHubFormTb4b4b4.Te6edf3announceTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"min-w-0 text-sm"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-medium text-sem-fg"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_announce_periodically"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3createHubFormTb4b4b4.Te6edf3announceTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3forTff7b72=Ta5d6ff"rrc-create-announce-interval"
Te6edf3classTff7b72=Ta5d6ff"text-sm font-semibold text-sem-fg-secondary"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_announce_interval"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3idTff7b72=Ta5d6ff"rrc-create-announce-interval-input"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3inputmodeTff7b72=Ta5d6ff"numeric"
Te6edf3autocompleteTff7b72=Ta5d6ff"off"
Te6edf3maxlengthTff7b72=Ta5d6ff"5"
Te6edf3classTff7b72=Ta5d6ff"w-16 shrink-0 rounded-lg border border-sem-border bg-sem-canvas px-1.5 py-1 text-center text-xs font-bold text-sem-accent tabular-nums shadow-xs focus:border-sem-accent focus:outline-hidden focus:ring-1 focus:ring-sem-accent/40"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3createAnnounceIntervalMinutesShownTa5d6ff"
Tb4b4b4:Te6edf3aria-labelTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.host_announce_interval'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3focusTff7b72=Ta5d6ff"Te6edf3onCreateAnnounceIntervalFocusTa5d6ff"
Tb4b4b4@Te6edf3inputTff7b72=Ta5d6ff"Te6edf3onCreateAnnounceIntervalInputTa5d6ff"
Tb4b4b4@Te6edf3blurTff7b72=Ta5d6ff"Te6edf3onCreateAnnounceIntervalBlurTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3idTff7b72=Ta5d6ff"rrc-create-announce-interval"
Te6edf3typeTff7b72=Ta5d6ff"range"
Te6edf3minTff7b72=Ta5d6ff"0"
Tb4b4b4:Te6edf3maxTff7b72=Ta5d6ff"Te6edf3announceSliderPosMaxTa5d6ff"
Te6edf3stepTff7b72=Ta5d6ff"1"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3createAnnounceIntervalSliderPosTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full h-2 rounded-lg appearance-none cursor-pointer bg-sem-surface-muted accent-sem-accent"
Tb4b4b4@Te6edf3inputTff7b72=Ta5d6ff"Te6edf3onCreateAnnounceIntervalSliderTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-sem-fg-muted"Tb4b4b4>
Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_announce_interval_hint"Tb4b4b4, Tb4b4b4{
Te6edf3minutesTff7b72: Te6edf3createAnnounceIntervalMinutesTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-end gap-2 pt-1"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnSecondaryTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showCreateHub Tff7b72= Tff7b72falseTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"submit" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnPrimaryTa5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.create_hub"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72formTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- hosted hub settings dialog -->
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showHostHubSettingsTa5d6ff" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3RELAY_HOST_MODAL_OVERLAYTa5d6ff" Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3showHostHubSettings Tff7b72= Tff7b72falseTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3RELAY_HOST_MODAL_PANEL_COMPACTTa5d6ff" @Te6edf3click.Te6edf3stopTb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"mb-4 text-lg font-semibold text-sem-fg"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_hub_settings"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72form Te6edf3classTff7b72=Ta5d6ff"space-y-4" Tb4b4b4@Te6edf3submitTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3saveHostHubSettingsTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-sm font-semibold text-sem-fg-secondary"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hub_name"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3hostHubSettingsFormTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.hub_name_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"setting-toggle flex items-start gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"rrc-host-announce" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3hostHubSettingsFormTb4b4b4.Te6edf3announceTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"min-w-0 text-sm"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-medium text-sem-fg"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_announce_periodically"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3hostHubSettingsFormTb4b4b4.Te6edf3announceTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center justify-between gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72label
Te6edf3forTff7b72=Ta5d6ff"rrc-host-announce-interval"
Te6edf3classTff7b72=Ta5d6ff"text-sm font-semibold text-sem-fg-secondary"
Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_announce_interval"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72label
Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3idTff7b72=Ta5d6ff"rrc-host-announce-interval-input"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3inputmodeTff7b72=Ta5d6ff"numeric"
Te6edf3autocompleteTff7b72=Ta5d6ff"off"
Te6edf3maxlengthTff7b72=Ta5d6ff"5"
Te6edf3classTff7b72=Ta5d6ff"w-16 shrink-0 rounded-lg border border-sem-border bg-sem-canvas px-1.5 py-1 text-center text-xs font-bold text-sem-accent tabular-nums shadow-xs focus:border-sem-accent focus:outline-hidden focus:ring-1 focus:ring-sem-accent/40"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3hostAnnounceIntervalMinutesShownTa5d6ff"
Tb4b4b4:Te6edf3aria-labelTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.host_announce_interval'Tb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3focusTff7b72=Ta5d6ff"Te6edf3onHostAnnounceIntervalFocusTa5d6ff"
Tb4b4b4@Te6edf3inputTff7b72=Ta5d6ff"Te6edf3onHostAnnounceIntervalInputTa5d6ff"
Tb4b4b4@Te6edf3blurTff7b72=Ta5d6ff"Te6edf3onHostAnnounceIntervalBlurTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3idTff7b72=Ta5d6ff"rrc-host-announce-interval"
Te6edf3typeTff7b72=Ta5d6ff"range"
Te6edf3minTff7b72=Ta5d6ff"0"
Tb4b4b4:Te6edf3maxTff7b72=Ta5d6ff"Te6edf3announceSliderPosMaxTa5d6ff"
Te6edf3stepTff7b72=Ta5d6ff"1"
Tb4b4b4:Te6edf3valueTff7b72=Ta5d6ff"Te6edf3hostAnnounceIntervalSliderPosTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"w-full h-2 rounded-lg appearance-none cursor-pointer bg-sem-surface-muted accent-sem-accent"
Tb4b4b4@Te6edf3inputTff7b72=Ta5d6ff"Te6edf3onHostAnnounceIntervalSliderTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-sem-fg-muted"Tb4b4b4>
Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_announce_interval_hint"Tb4b4b4, Tb4b4b4{
Te6edf3minutesTff7b72: Te6edf3hostAnnounceIntervalMinutesTb4b4b4,
Tb4b4b4}Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-end gap-2 pt-1"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnSecondaryTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showHostHubSettings Tff7b72= Tff7b72falseTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"submit" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnPrimaryTa5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.save"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72formTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- add hub dialog -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showAddHubTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3showAddHub Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-md rounded-2xl border border-sem-border-card bg-sem-surface p-5 shadow-xl"Tb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"mb-4 text-lg font-semibold"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.add_hub_title"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72form Te6edf3classTff7b72=Ta5d6ff"space-y-4" Tb4b4b4@Te6edf3submitTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3addHubTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-sm font-semibold text-sem-fg-secondary"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hub_hash"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3addHubFormTb4b4b4.Te6edf3hub_hashTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.hub_hash_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field font-mono"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-sm font-semibold text-sem-fg-secondary"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hub_name"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3addHubFormTb4b4b4.Te6edf3nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.hub_name_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-sem-border/70"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"flex w-full items-center gap-2 px-3 py-2 text-left text-sm font-medium text-sem-fg-secondary transition-colors hover:bg-sem-surface/40"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3addHubAdvancedOpen Tff7b72= Tff7b72!Te6edf3addHubAdvancedOpenTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3addHubAdvancedOpen Tff7b72? Ta5d6ff'chevron-down' Tff7b72: Ta5d6ff'chevron-right'Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-4 shrink-0"
Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.advanced"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3addHubAdvancedOpenTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"space-y-1.5 border-t border-sem-border/70 px-3 py-3"
Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-sm font-semibold text-sem-fg-secondary"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.dest_name"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3addHubFormTb4b4b4.Te6edf3dest_nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Te6edf3placeholderTff7b72=Ta5d6ff"rrc.hub"
Te6edf3classTff7b72=Ta5d6ff"input-field font-mono"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-end gap-2 pt-1"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnSecondaryTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showAddHub Tff7b72= Tff7b72falseTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"submit" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnPrimaryTa5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.add_hub"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72formTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

T8b949e<!-- hub settings dialog -->
Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3showSettingsTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4"
Tb4b4b4@Te6edf3clickTb4b4b4.Te6edf3selfTff7b72=Ta5d6ff"Te6edf3showSettings Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"w-full max-w-md rounded-2xl border border-sem-border-card bg-sem-surface p-5 shadow-xl"Tb4b4b4>
Tb4b4b4<Tff7b72h2 Te6edf3classTff7b72=Ta5d6ff"mb-4 text-lg font-semibold"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.settings"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h2Tb4b4b4>
Tb4b4b4<Tff7b72form Te6edf3classTff7b72=Ta5d6ff"space-y-4" Tb4b4b4@Te6edf3submitTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3saveSettingsTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-sm font-semibold text-sem-fg-secondary"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hub_icon"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex items-center gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"flex size-12 shrink-0 items-center justify-center rounded-xl border border-sem-border bg-sem-canvas"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon
Tb4b4b4:Te6edf3icon-nameTff7b72=Ta5d6ff"Te6edf3settingsHubIconPreviewTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"size-7"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3settingsHubStatusIconClassTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex min-w-0 flex-1 flex-wrap gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Tb4b4b4[Te6edf3btnSecondaryTb4b4b4, Ta5d6ff'!py-1.5 !text-xs'Tb4b4b4]Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openIconPickerTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72MaterialDesignIcon Te6edf3icon-nameTff7b72=Ta5d6ff"image-edit-outline" Te6edf3classTff7b72=Ta5d6ff"size-4" Tb4b4b4/Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hub_icon_choose"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3settingsFormTb4b4b4.Te6edf3hub_iconTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-xs text-sem-accent hover:underline"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3settingsFormTb4b4b4.Te6edf3hub_icon Tff7b72= Tff7b72nullTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hub_icon_reset_default"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-sm font-semibold text-sem-fg-secondary"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hub_display_name"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3settingsFormTb4b4b4.Te6edf3custom_nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3settingsFormTb4b4b4.Te6edf3default_nameTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3settingsFormTb4b4b4.Te6edf3has_custom_nameTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"text-xs text-sem-accent hover:underline"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3settingsFormTb4b4b4.Te6edf3custom_name Tff7b72= Ta5d6ff''Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.revert_hub_name"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"setting-toggle flex items-start gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"rrc-auto-reconnect" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3settingsFormTb4b4b4.Te6edf3auto_reconnectTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"min-w-0 text-sm"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-medium text-sem-fg"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.auto_reconnect"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"setting-toggle flex items-start gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"rrc-auto-list" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3settingsFormTb4b4b4.Te6edf3auto_listTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"min-w-0 text-sm"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-medium text-sem-fg"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.auto_list"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"setting-toggle flex items-start gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72Toggle Te6edf3idTff7b72=Ta5d6ff"rrc-auto-who" Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3settingsFormTb4b4b4.Te6edf3auto_whoTa5d6ff" Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"min-w-0 text-sm"Tb4b4b4>
Tb4b4b4<Tff7b72span Te6edf3classTff7b72=Ta5d6ff"font-medium text-sem-fg"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.auto_who"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-1.5"Tb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"block text-sm font-semibold text-sem-fg-secondary"Tb4b4b4>Tff7b72{{
Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.nickname"Tb4b4b4)
Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3v-modelTff7b72=Ta5d6ff"Te6edf3settingsFormTb4b4b4.Te6edf3nickTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"text"
Tb4b4b4:Te6edf3placeholderTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'relay_chat.nickname_placeholder'Tb4b4b4)Ta5d6ff"
Te6edf3classTff7b72=Ta5d6ff"input-field"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex justify-end gap-2 pt-1"Tb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"button" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnSecondaryTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3showSettings Tff7b72= Tff7b72falseTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"common.cancel"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button Te6edf3typeTff7b72=Ta5d6ff"submit" Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3btnPrimaryTa5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.save"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72formTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72MdiIconPickerModal
Tb4b4b4:Te6edf3openTff7b72=Ta5d6ff"Te6edf3showIconPickerTa5d6ff"
Tb4b4b4:Te6edf3selected-iconTff7b72=Ta5d6ff"Te6edf3settingsFormTb4b4b4.Te6edf3hub_iconTa5d6ff"
Tb4b4b4:Te6edf3preview-icon-classTff7b72=Ta5d6ff"Te6edf3settingsHubStatusIconClassTa5d6ff"
Tb4b4b4@Te6edf3closeTff7b72=Ta5d6ff"Te6edf3showIconPicker Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4@Te6edf3selectTff7b72=Ta5d6ff"Te6edf3onHubIconPickedTa5d6ff"
Tb4b4b4/Tb4b4b4>

Tb4b4b4<Tff7b72ContextMenuPanel
Te6edf3v-click-outsideTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3handlerTff7b72: Te6edf3closeSidebarMenuTb4b4b4, Te6edf3captureTff7b72: Tff7b72true Tb4b4b4}Ta5d6ff"
Tb4b4b4:Te6edf3showTff7b72=Ta5d6ff"Te6edf3sidebarMenuTb4b4b4.Te6edf3showTa5d6ff"
Tb4b4b4:Te6edf3xTff7b72=Ta5d6ff"Te6edf3sidebarMenuTb4b4b4.Te6edf3xTa5d6ff"
Tb4b4b4:Te6edf3yTff7b72=Ta5d6ff"Te6edf3sidebarMenuTb4b4b4.Te6edf3yTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openAddHubFromMenuTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_add_hub"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3sidebarMenuTb4b4b4.Te6edf3roomTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3focusJoinRoomFromMenuTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_add_room"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3sidebarMenuTb4b4b4.Te6edf3room Tff7b72&& Tff7b72!Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTb4b4b4.Te6edf3connectedTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3connectHubFromMenuTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_connect_hub"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3sidebarMenuTb4b4b4.Te6edf3room Tff7b72&& Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTb4b4b4.Te6edf3connectedTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3disconnectHubFromMenuTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_disconnect_hub"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyHubAddressFromMenuTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_copy_hub_address"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3shareHubFromMenuTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3sidebarMenuTb4b4b4.Te6edf3room Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_share_room"Tb4b4b4) Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_share_hub"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3openSettingsFromMenuTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_hub_settings"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3sidebarMenuTb4b4b4.Te6edf3roomTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3leaveRoomFromMenuTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_leave_room"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuDivider Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Te6edf3classTff7b72=Ta5d6ff"text-sem-danger" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3removeHubFromMenuTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_remove_hub"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuPanelTb4b4b4>

Tb4b4b4<Tff7b72ContextMenuPanel
Te6edf3v-click-outsideTff7b72=Ta5d6ff"Tb4b4b4{ Te6edf3handlerTff7b72: Te6edf3closeMessageMenuTb4b4b4, Te6edf3captureTff7b72: Tff7b72true Tb4b4b4}Ta5d6ff"
Tb4b4b4:Te6edf3showTff7b72=Ta5d6ff"Te6edf3messageMenuTb4b4b4.Te6edf3showTa5d6ff"
Tb4b4b4:Te6edf3xTff7b72=Ta5d6ff"Te6edf3messageMenuTb4b4b4.Te6edf3xTa5d6ff"
Tb4b4b4:Te6edf3yTff7b72=Ta5d6ff"Te6edf3messageMenuTb4b4b4.Te6edf3yTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3messageMenuTb4b4b4.Te6edf3msg Tff7b72&& Te6edf3canQuoteMessageTb4b4b4(Te6edf3messageMenuTb4b4b4.Te6edf3msgTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3replyWithQuoteFromMenuTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_reply_quote"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3messageMenuTb4b4b4.Te6edf3msg Tff7b72&& Te6edf3canMentionMessageAuthorTb4b4b4(Te6edf3messageMenuTb4b4b4.Te6edf3msgTb4b4b4)Ta5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3mentionUserFromMenuTa5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_mention_user"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3messageMenuTb4b4b4.Te6edf3msg Tff7b72&& Te6edf3messageMenuTb4b4b4.Te6edf3msgTb4b4b4.Te6edf3textTa5d6ff" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3copyMessageFromMenuTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_copy_message"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72template Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3messageMenuTb4b4b4.Te6edf3msg Tff7b72&& Te6edf3canModerateSelectedHubTa5d6ff"Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuDivider Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Te6edf3classTff7b72=Ta5d6ff"text-sem-danger" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3kickUserFromMenuTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_kick_user"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tff7b72ContextMenuItem Te6edf3classTff7b72=Ta5d6ff"text-sem-danger" Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3banUserFromMenuTa5d6ff"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.ctx_ban_user"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuItemTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ContextMenuPanelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>

Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Tb4b4b4{ Te6edf3nextTick Tb4b4b4} Tff7b72from Ta5d6ff"vue"Tb4b4b4;
Tff7b72import Te6edf3WebSocketConnection Tff7b72from Ta5d6ff"../../js/WebSocketConnection"Tb4b4b4;
Tff7b72import Te6edf3GlobalState Tff7b72from Ta5d6ff"../../js/GlobalState"Tb4b4b4;
Tff7b72import Te6edf3GlobalEmitter Tff7b72from Ta5d6ff"../../js/GlobalEmitter"Tb4b4b4;
Tff7b72import Te6edf3DialogUtils Tff7b72from Ta5d6ff"../../js/DialogUtils"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Te6edf3Utils Tff7b72from Ta5d6ff"../../js/Utils"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3DEFAULT_RRC_HUB_ICONTb4b4b4, Te6edf3normalizeMdiIconName Tb4b4b4} Tff7b72from Ta5d6ff"../../js/mdiIconNames.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3countRelayMentions Tb4b4b4} Tff7b72from Ta5d6ff"../../js/relayMentionCount.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3unjoinedAvailableRooms Tb4b4b4} Tff7b72from Ta5d6ff"../../js/rrcAvailableRooms.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3filterRelayMembersTb4b4b4, Te6edf3filterRelayMessages Tb4b4b4} Tff7b72from Ta5d6ff"../../js/relayMessageSearch.js"Tb4b4b4;
Tff7b72import Tb4b4b4{
Te6edf3buildRelayMessageTimelineTb4b4b4,
Te6edf3mergeRelayMessagesTb4b4b4,
Te6edf3relayMessageAlreadyPresentTb4b4b4,
Te6edf3relayMessageKeyTb4b4b4,
Tb4b4b4} Tff7b72from Ta5d6ff"../../js/relayMessageTimeline.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3MIN_VIRTUAL_RELAY_ENTRIES Tb4b4b4} Tff7b72from Ta5d6ff"./relayMessageListVirtual.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3loadRelayLayoutTb4b4b4, Te6edf3saveRelayLayout Tb4b4b4} Tff7b72from Ta5d6ff"../../js/relayLayoutStore.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3loadFeatureSidebarCollapsedTb4b4b4, Te6edf3saveFeatureSidebarCollapsed Tb4b4b4} Tff7b72from Ta5d6ff"../../js/browserLayoutStore.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3RELAY_HOST_MODAL_OVERLAYTb4b4b4, Te6edf3RELAY_HOST_MODAL_PANEL_COMPACT Tb4b4b4} Tff7b72from Ta5d6ff"../../js/relayHostModalClasses.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3buildRelayShareMessage Tb4b4b4} Tff7b72from Ta5d6ff"../../js/relayLinkUtils.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3handleRichHtmlLinkClick Tb4b4b4} Tff7b72from Ta5d6ff"../../js/NomadRichHtmlLinks.js"Tb4b4b4;
Tff7b72import Te6edf3MarkdownRenderer Tff7b72from Ta5d6ff"../../js/MarkdownRenderer.js"Tb4b4b4;
Tff7b72import Tb4b4b4{
Te6edf3ANNOUNCE_SLIDER_POS_MAXTb4b4b4,
Te6edf3announceMinutesToSliderPosTb4b4b4,
Te6edf3announceSliderPosToMinutesTb4b4b4,
Tb4b4b4} Tff7b72from Ta5d6ff"../../js/announceIntervalSliderMap.js"Tb4b4b4;
Tff7b72import Te6edf3MaterialDesignIcon Tff7b72from Ta5d6ff"../MaterialDesignIcon.vue"Tb4b4b4;
Tff7b72import Te6edf3MdiIconPickerModal Tff7b72from Ta5d6ff"../MdiIconPickerModal.vue"Tb4b4b4;
Tff7b72import Te6edf3RelayHostModerationPage Tff7b72from Ta5d6ff"./RelayHostModerationPage.vue"Tb4b4b4;
Tff7b72import Te6edf3RelayMessageEntry Tff7b72from Ta5d6ff"./RelayMessageEntry.vue"Tb4b4b4;
Tff7b72import Te6edf3RelayMessageListVirtual Tff7b72from Ta5d6ff"./RelayMessageListVirtual.vue"Tb4b4b4;
Tff7b72import Te6edf3ContextMenuPanel Tff7b72from Ta5d6ff"../contextmenu/ContextMenuPanel.vue"Tb4b4b4;
Tff7b72import Te6edf3ContextMenuItem Tff7b72from Ta5d6ff"../contextmenu/ContextMenuItem.vue"Tb4b4b4;
Tff7b72import Te6edf3ContextMenuDivider Tff7b72from Ta5d6ff"../contextmenu/ContextMenuDivider.vue"Tb4b4b4;
Tff7b72import Te6edf3Toggle Tff7b72from Ta5d6ff"../forms/Toggle.vue"Tb4b4b4;

Tff7b72const Te6edf3BTN_PRIMARY Tff7b72=
Ta5d6ff"inline-flex items-center justify-center gap-1.5 rounded-lg bg-sem-action-primary px-3 py-2 text-sm font-semibold text-white transition hover:bg-sem-action-primary-hover disabled:opacity-50 disabled:cursor-not-allowed"Tb4b4b4;
Tff7b72const Te6edf3BTN_SECONDARY Tff7b72=
Ta5d6ff"inline-flex items-center justify-center gap-1.5 rounded-lg border border-sem-border bg-sem-surface-muted px-3 py-2 text-sm font-medium text-sem-fg transition hover:bg-sem-surface-raised disabled:opacity-50 disabled:cursor-not-allowed"Tb4b4b4;
Tff7b72const Te6edf3BTN_ICON Tff7b72=
Ta5d6ff"inline-flex items-center justify-center rounded-lg border border-sem-border bg-sem-canvas p-2 text-sem-fg transition hover:bg-sem-surface/60 dark:hover:bg-sem-surface/30 disabled:opacity-50 disabled:cursor-not-allowed"Tb4b4b4;
Tff7b72const Te6edf3BTN_ICON_SM Tff7b72=
Ta5d6ff"inline-flex items-center justify-center rounded-lg border border-sem-border bg-sem-canvas p-1.5 text-sem-fg transition hover:bg-sem-surface/60 dark:hover:bg-sem-surface/30"Tb4b4b4;
Tff7b72const Te6edf3BTN_DANGER Tff7b72=
Ta5d6ff"inline-flex items-center justify-center rounded-lg border border-sem-border bg-sem-canvas p-2 text-sem-fg transition hover:border-sem-danger hover:text-sem-danger hover:bg-sem-danger/10 disabled:opacity-50 disabled:cursor-not-allowed"Tb4b4b4;
Tff7b72const Te6edf3BTN_DANGER_SM Tff7b72=
Ta5d6ff"inline-flex items-center justify-center rounded-lg border border-sem-border bg-sem-canvas p-1.5 text-sem-fg transition hover:border-sem-danger hover:text-sem-danger hover:bg-sem-danger/10"Tb4b4b4;

Tff7b72const Te6edf3NAME_COLORS Tff7b72= Tb4b4b4[Ta5d6ff"#ef4444"Tb4b4b4, Ta5d6ff"#f97316"Tb4b4b4, Ta5d6ff"#eab308"Tb4b4b4, Ta5d6ff"#22c55e"Tb4b4b4, Ta5d6ff"#14b8a6"Tb4b4b4, Ta5d6ff"#3b82f6"Tb4b4b4, Ta5d6ff"#8b5cf6"Tb4b4b4, Ta5d6ff"#ec4899"Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3RELAY_MESSAGES_INITIAL_PAGE_SIZE Tff7b72= T79c0ff150Tb4b4b4;
Tff7b72const Te6edf3RELAY_MESSAGES_PREVIOUS_PAGE_SIZE Tff7b72= T79c0ff100Tb4b4b4;
Tff7b72const Te6edf3LOAD_PREVIOUS_SCROLL_EDGE_PX Tff7b72= T79c0ff200Tb4b4b4;
Tff7b72const Te6edf3DEFAULT_ANNOUNCE_INTERVAL_SECONDS Tff7b72= T79c0ff900Tb4b4b4;
Tff7b72const Te6edf3ANNOUNCE_INTERVAL_MIN_MINUTES Tff7b72= T79c0ff1Tb4b4b4;
Tff7b72const Te6edf3ANNOUNCE_INTERVAL_MAX_MINUTES Tff7b72= T79c0ff1440Tb4b4b4;

Tff7b72function Te6edf3clampAnnounceIntervalMinutesTb4b4b4(Te6edf3valueTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3n Tff7b72= Tffa657NumberTb4b4b4.Tffa657parseIntTb4b4b4(Tffa657StringTb4b4b4(Te6edf3value Tff7b72?? Ta5d6ff""Tb4b4b4)Tb4b4b4, T79c0ff10Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3DEFAULT_ANNOUNCE_INTERVAL_SECONDS Tff7b72/ T79c0ff60Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(Te6edf3ANNOUNCE_INTERVAL_MIN_MINUTESTb4b4b4, Tffa657MathTb4b4b4.Te6edf3minTb4b4b4(Te6edf3ANNOUNCE_INTERVAL_MAX_MINUTESTb4b4b4, Te6edf3nTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72function Te6edf3secondsToAnnounceMinutesTb4b4b4(Te6edf3secondsTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3s Tff7b72= Tffa657NumberTb4b4b4(Te6edf3secondsTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3sTb4b4b4) Tff7b72|| Te6edf3s Tff7b72<= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3DEFAULT_ANNOUNCE_INTERVAL_SECONDS Tff7b72/ T79c0ff60Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3clampAnnounceIntervalMinutesTb4b4b4(Tffa657MathTb4b4b4.Te6edf3roundTb4b4b4(Te6edf3s Tff7b72/ T79c0ff60Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}

Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"RelayChatPage"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{
Te6edf3MaterialDesignIconTb4b4b4,
Te6edf3MdiIconPickerModalTb4b4b4,
Te6edf3RelayHostModerationPageTb4b4b4,
Te6edf3RelayMessageEntryTb4b4b4,
Te6edf3RelayMessageListVirtualTb4b4b4,
Te6edf3ContextMenuPanelTb4b4b4,
Te6edf3ContextMenuItemTb4b4b4,
Te6edf3ContextMenuDividerTb4b4b4,
Te6edf3ToggleTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3beforeRouteLeaveTb4b4b4(Te6edf3toTb4b4b4, Tff7b72fromTb4b4b4, Te6edf3nextTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3persistRelayLayoutTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3nextTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4{
Te6edf3hubHashTff7b72: Tb4b4b4{ Te6edf3typeTff7b72: Tffa657StringTb4b4b4, Tff7b72defaultTff7b72: Tff7b72null Tb4b4b4}Tb4b4b4,
Te6edf3roomTff7b72: Tb4b4b4{ Te6edf3typeTff7b72: Tffa657StringTb4b4b4, Tff7b72defaultTff7b72: Tff7b72null Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3RELAY_HOST_MODAL_OVERLAYTb4b4b4,
Te6edf3RELAY_HOST_MODAL_PANEL_COMPACTTb4b4b4,
Te6edf3btnPrimaryTff7b72: Te6edf3BTN_PRIMARYTb4b4b4,
Te6edf3btnSecondaryTff7b72: Te6edf3BTN_SECONDARYTb4b4b4,
Te6edf3btnIconTff7b72: Te6edf3BTN_ICONTb4b4b4,
Te6edf3btnIconSmTff7b72: Te6edf3BTN_ICON_SMTb4b4b4,
Te6edf3btnDangerTff7b72: Te6edf3BTN_DANGERTb4b4b4,
Te6edf3btnDangerSmTff7b72: Te6edf3BTN_DANGER_SMTb4b4b4,
Te6edf3tabsTff7b72: Tb4b4b4[
Tb4b4b4{ Te6edf3idTff7b72: Ta5d6ff"chat"Tb4b4b4, Te6edf3labelTff7b72: Ta5d6ff"relay_chat.tab_connect"Tb4b4b4, Te6edf3iconTff7b72: Ta5d6ff"forum" Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3idTff7b72: Ta5d6ff"discovery"Tb4b4b4, Te6edf3labelTff7b72: Ta5d6ff"relay_chat.tab_discovery"Tb4b4b4, Te6edf3iconTff7b72: Ta5d6ff"radar" Tb4b4b4}Tb4b4b4,
Tb4b4b4{ Te6edf3idTff7b72: Ta5d6ff"host"Tb4b4b4, Te6edf3labelTff7b72: Ta5d6ff"relay_chat.tab_host"Tb4b4b4, Te6edf3iconTff7b72: Ta5d6ff"server-network" Tb4b4b4}Tb4b4b4,
Tb4b4b4]Tb4b4b4,
Te6edf3viewTff7b72: Ta5d6ff"chat"Tb4b4b4,
Te6edf3discoveredTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3discoverySearchTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3discoverySearchTimerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3discoveryLoadingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3serverHubsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3roomFormsTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3announceSliderPosMaxTff7b72: Te6edf3ANNOUNCE_SLIDER_POS_MAXTb4b4b4,
Te6edf3showCreateHubTff7b72: Tff7b72falseTb4b4b4,
Te6edf3createHubFormTff7b72: Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3greetingTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3announceTff7b72: Tff7b72trueTb4b4b4,
Te6edf3announce_interval_secondsTff7b72: Te6edf3DEFAULT_ANNOUNCE_INTERVAL_SECONDSTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3createAnnounceIntervalDraftTff7b72: Tff7b72nullTb4b4b4,
Te6edf3showHostHubSettingsTff7b72: Tff7b72falseTb4b4b4,
Te6edf3hostHubSettingsIdTff7b72: Tff7b72nullTb4b4b4,
Te6edf3hostHubSettingsFormTff7b72: Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3announceTff7b72: Tff7b72trueTb4b4b4,
Te6edf3announce_interval_secondsTff7b72: Te6edf3DEFAULT_ANNOUNCE_INTERVAL_SECONDSTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3hostAnnounceIntervalDraftTff7b72: Tff7b72nullTb4b4b4,
Te6edf3hubsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3selectedHubHashTff7b72: Tff7b72nullTb4b4b4,
Te6edf3selectedRoomTff7b72: Tff7b72nullTb4b4b4,
Te6edf3expandedHubsTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3availableRoomsExpandedTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3availableRoomsRefreshingTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3hostUptimeTickTff7b72: T79c0ff0Tb4b4b4,
Te6edf3hostUptimeAnchorMsTff7b72: T79c0ff0Tb4b4b4,
Te6edf3hostUptimeTimerTff7b72: Tff7b72nullTb4b4b4,
Te6edf3expandedPresenceGroupsTff7b72: Tb4b4b4{Tb4b4b4}Tb4b4b4,
Te6edf3relaySidebarCollapsedTff7b72: Te6edf3loadFeatureSidebarCollapsedTb4b4b4(Ta5d6ff"relayChat"Tb4b4b4) Tff7b72?? Tff7b72falseTb4b4b4,
Te6edf3smUpTff7b72: Tff7b72falseTb4b4b4,
Te6edf3smMqTff7b72: Tff7b72nullTb4b4b4,
Te6edf3showMembersTff7b72: Tff7b72falseTb4b4b4,
Te6edf3showSearchTff7b72: Tff7b72falseTb4b4b4,
Te6edf3messageSearchTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3membersSearchTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3dragHubIndexTff7b72: Tff7b72nullTb4b4b4,
Te6edf3dragRoomHubHashTff7b72: Tff7b72nullTb4b4b4,
Te6edf3dragRoomIndexTff7b72: Tff7b72nullTb4b4b4,
Te6edf3sidebarMenuTff7b72: Tb4b4b4{
Te6edf3showTff7b72: Tff7b72falseTb4b4b4,
Te6edf3xTff7b72: T79c0ff0Tb4b4b4,
Te6edf3yTff7b72: T79c0ff0Tb4b4b4,
Te6edf3hubTff7b72: Tff7b72nullTb4b4b4,
Te6edf3roomTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3messageMenuTff7b72: Tb4b4b4{
Te6edf3showTff7b72: Tff7b72falseTb4b4b4,
Te6edf3xTff7b72: T79c0ff0Tb4b4b4,
Te6edf3yTff7b72: T79c0ff0Tb4b4b4,
Te6edf3msgTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3messagesTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3membersTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3hasMorePreviousTff7b72: Tff7b72falseTb4b4b4,
Te6edf3isLoadingPreviousTff7b72: Tff7b72falseTb4b4b4,
Te6edf3loadPreviousInFlightTff7b72: T79c0ff0Tb4b4b4,
Te6edf3roomSelectSequenceTff7b72: T79c0ff0Tb4b4b4,
Te6edf3composerTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3sendingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3joinRoomNameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3joinRoomKeyTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3badKeyPromptInFlightTff7b72: Tff7b72nullTb4b4b4,
Te6edf3showAddHubTff7b72: Tff7b72falseTb4b4b4,
Te6edf3addHubAdvancedOpenTff7b72: Tff7b72falseTb4b4b4,
Te6edf3addHubFormTff7b72: Tb4b4b4{
Te6edf3hub_hashTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3nameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3dest_nameTff7b72: Ta5d6ff""Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3showSettingsTff7b72: Tff7b72falseTb4b4b4,
Te6edf3showIconPickerTff7b72: Tff7b72falseTb4b4b4,
Te6edf3settingsHubHashTff7b72: Tff7b72nullTb4b4b4,
Te6edf3settingsFormTff7b72: Tb4b4b4{
Te6edf3auto_reconnectTff7b72: Tff7b72trueTb4b4b4,
Te6edf3auto_listTff7b72: Tff7b72trueTb4b4b4,
Te6edf3auto_whoTff7b72: Tff7b72falseTb4b4b4,
Te6edf3nickTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3custom_nameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3default_nameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3has_custom_nameTff7b72: Tff7b72falseTb4b4b4,
Te6edf3hub_iconTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3hostModerationTff7b72: Tb4b4b4{
Te6edf3hubTff7b72: Tff7b72nullTb4b4b4,
Te6edf3tabTff7b72: Ta5d6ff"rooms"Tb4b4b4,
Te6edf3roomTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3computedTff7b72: Tb4b4b4{
Te6edf3rrcEnabledTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3GlobalStateTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3rrc_enabled Tff7b72!== Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3showUnreadBadgesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3GlobalStateTb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3rrc_unread_badges_enabled Tff7b72!== Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isPopoutModeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657BooleanTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3metaTff7b72?Tb4b4b4.Te6edf3isPopoutTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3canModerateSelectedHubTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedHubTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3serverHubsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3sTb4b4b4) Tb4b4b4=> Te6edf3sTb4b4b4.Te6edf3running Tff7b72&& Te6edf3sTb4b4b4.Te6edf3dest_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedHubTb4b4b4.Te6edf3hub_hashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3effectiveSidebarCollapsedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3relaySidebarCollapsed Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3smUp Tff7b72&& Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isPopoutModeTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectedHubTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4=> Te6edf3hubTb4b4b4.Te6edf3hub_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedHubHashTb4b4b4) Tff7b72|| Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3settingsHubTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3settingsHubHashTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4=> Te6edf3hubTb4b4b4.Te6edf3hub_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3settingsHubHashTb4b4b4) Tff7b72|| Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3settingsHubIconPreviewTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3normalizeMdiIconNameTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3settingsFormTb4b4b4.Te6edf3hub_iconTb4b4b4) Tff7b72|| Te6edf3DEFAULT_RRC_HUB_ICONTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3settingsHubStatusIconClassTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3status Tff7b72= Tff7b72thisTb4b4b4.Te6edf3settingsHubTff7b72?Tb4b4b4.Te6edf3status Tff7b72?? T79c0ff0Tb4b4b4;
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3statusIconColorTb4b4b4(Te6edf3statusTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3createAnnounceIntervalMinutesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3secondsToAnnounceMinutesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3createHubFormTb4b4b4.Te6edf3announce_interval_secondsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3createAnnounceIntervalSliderPosTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3announceMinutesToSliderPosTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalMinutesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3createAnnounceIntervalMinutesShownTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalDraft Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalDraftTb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657StringTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalMinutesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hostAnnounceIntervalMinutesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3secondsToAnnounceMinutesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hostHubSettingsFormTb4b4b4.Te6edf3announce_interval_secondsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hostAnnounceIntervalSliderPosTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3announceMinutesToSliderPosTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalMinutesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hostAnnounceIntervalMinutesShownTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalDraft Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalDraftTb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657StringTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalMinutesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3messageTimelineTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3buildRelayMessageTimelineTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3messagesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3relayChatPageSelfTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3useVirtualMessageListTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3messageTimelineTb4b4b4.Te6edf3length Tff7b72< Te6edf3MIN_VIRTUAL_RELAY_ENTRIESTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3GlobalStateTff7b72?Tb4b4b4.Te6edf3configTff7b72?Tb4b4b4.Te6edf3message_list_virtualization Tff7b72!== Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3oldestLoadedSeqTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3minSeq Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3msg Tff7b72of Tff7b72thisTb4b4b4.Te6edf3messagesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3msgTb4b4b4.Te6edf3seq Tff7b72!== Ta5d6ff"number"Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3minSeq Tff7b72=== Tff7b72null Tff7b72|| Te6edf3msgTb4b4b4.Te6edf3seq Tff7b72< Te6edf3minSeqTb4b4b4) Tb4b4b4{
Te6edf3minSeq Tff7b72= Te6edf3msgTb4b4b4.Te6edf3seqTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72return Te6edf3minSeqTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3searchResultsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3filterRelayMessagesTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3messagesTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3messageSearchTb4b4b4, Tb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3displayNameTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3filteredOnlineMembersTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3filterRelayMembersTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3membersTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3membersSearchTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3filteredOfflineMembersTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3filterRelayMembersTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3offlineMembersTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3membersSearchTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onlineMembersTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3membersTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3offlineMembersTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3onlineHashes Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3membersTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3mTb4b4b4) Tb4b4b4=> Te6edf3mTb4b4b4.Te6edf3hashTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3seen Tff7b72= Tff7b72new Tffa657MapTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3msg Tff7b72of Tff7b72thisTb4b4b4.Te6edf3messagesTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3msgTb4b4b4.Te6edf3src Tff7b72|| Te6edf3onlineHashesTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3msgTb4b4b4.Te6edf3srcTb4b4b4) Tff7b72|| Te6edf3seenTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3msgTb4b4b4.Te6edf3srcTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72continueTb4b4b4;
Tb4b4b4}
Te6edf3seenTb4b4b4.Te6edf3setTb4b4b4(Te6edf3msgTb4b4b4.Te6edf3srcTb4b4b4, Tb4b4b4{ Te6edf3hashTff7b72: Te6edf3msgTb4b4b4.Te6edf3srcTb4b4b4, Te6edf3nameTff7b72: Te6edf3msgTb4b4b4.Te6edf3nick Tff7b72|| Te6edf3msgTb4b4b4.Te6edf3srcTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff12Tb4b4b4) Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657ArrayTb4b4b4.Tff7b72fromTb4b4b4(Te6edf3seenTb4b4b4.Te6edf3valuesTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4.Te6edf3sortTb4b4b4(Tb4b4b4(Te6edf3aTb4b4b4, Te6edf3bTb4b4b4) Tb4b4b4=> Te6edf3aTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3localeCompareTb4b4b4(Te6edf3bTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3watchTff7b72: Tb4b4b4{
Te6edf3relaySidebarCollapsedTb4b4b4(Te6edf3collapsedTb4b4b4) Tb4b4b4{
Te6edf3saveFeatureSidebarCollapsedTb4b4b4(Ta5d6ff"relayChat"Tb4b4b4, Te6edf3collapsedTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3persistRelayLayoutTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectedHubHashTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3persistRelayLayoutTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectedRoomTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3persistRelayLayoutTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3viewTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3persistRelayLayoutTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
Te6edf3GlobalEmitterTb4b4b4.Te6edf3onTb4b4b4(Ta5d6ff"identity-switched"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onIdentitySwitchedTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3smMq Tff7b72= Tffa657windowTb4b4b4.Te6edf3matchMediaTb4b4b4(Ta5d6ff"(min-width: 640px)"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3smUp Tff7b72= Tff7b72thisTb4b4b4.Te6edf3smMqTb4b4b4.Te6edf3matchesTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3smMqTb4b4b4.Te6edf3addEventListenerTb4b4b4(Ta5d6ff"change"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onSmMqChangeTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostUptimeAnchorMs Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostUptimeTimer Tff7b72= Tffa657windowTb4b4b4.Te6edf3setIntervalTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3view Tff7b72=== Ta5d6ff"host" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3serverHubsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4.Te6edf3runningTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hostUptimeTick Tff7b72+= T79c0ff1Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4, T79c0ff1000Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3thenTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3restoreRelayLayoutTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3applyPopoutRouteTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3applyRouteQueryTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isPopoutModeTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fetchDiscoveredTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3WebSocketConnectionTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"message"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onWebsocketMessageTb4b4b4)Tb4b4b4;
Te6edf3GlobalEmitterTb4b4b4.Te6edf3offTb4b4b4(Ta5d6ff"identity-switched"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onIdentitySwitchedTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoverySearchTimerTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoverySearchTimerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hostUptimeTimerTb4b4b4) Tb4b4b4{
Te6edf3clearIntervalTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hostUptimeTimerTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostUptimeTimer Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3smMqTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3smMqTb4b4b4.Te6edf3removeEventListenerTb4b4b4(Ta5d6ff"change"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onSmMqChangeTb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// Leaving the page must stop treating the last room as "viewed" so new
T8b949e// mentions while away can bump unread again.
Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rrc/active/clear"Tb4b4b4)Tb4b4b4.Tff7b72catchTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3onIdentitySwitchedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hubs Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3serverHubs Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discovered Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messages Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3members Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedRoom Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubs Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3availableRoomsExpanded Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3availableRoomsRefreshing Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
Te6edf3GlobalStateTb4b4b4.Te6edf3relayChatUnreadCount Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isPopoutModeTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fetchDiscoveredTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3selectViewTb4b4b4(Te6edf3viewTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3view Tff7b72!== Ta5d6ff"host"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeHostModerationTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3view Tff7b72= Te6edf3viewTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3persistRelayLayoutTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3view Tff7b72=== Ta5d6ff"discovery"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fetchDiscoveredTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3view Tff7b72=== Ta5d6ff"host"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3persistRelayLayoutTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isPopoutModeTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3saveRelayLayoutTb4b4b4(Tb4b4b4{
Te6edf3viewTff7b72: Tff7b72thisTb4b4b4.Te6edf3viewTb4b4b4,
Te6edf3selectedHubHashTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedHubHashTb4b4b4,
Te6edf3selectedRoomTff7b72: Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4,
Te6edf3expandedHubsTff7b72: Tb4b4b4{ Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3expandedHubs Tb4b4b4}Tb4b4b4,
Te6edf3availableRoomsExpandedTff7b72: Tb4b4b4{ Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3availableRoomsExpanded Tb4b4b4}Tb4b4b4,
Te6edf3relaySidebarCollapsedTff7b72: Tff7b72thisTb4b4b4.Te6edf3relaySidebarCollapsedTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3restoreRelayLayoutTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isPopoutModeTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3saved Tff7b72= Te6edf3loadRelayLayoutTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3savedTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3savedTb4b4b4.Te6edf3view Tff7b72=== Ta5d6ff"chat" Tff7b72|| Te6edf3savedTb4b4b4.Te6edf3view Tff7b72=== Ta5d6ff"discovery" Tff7b72|| Te6edf3savedTb4b4b4.Te6edf3view Tff7b72=== Ta5d6ff"host"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3view Tff7b72= Te6edf3savedTb4b4b4.Te6edf3viewTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3savedTb4b4b4.Te6edf3relaySidebarCollapsed Tff7b72=== Ta5d6ff"boolean"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3relaySidebarCollapsed Tff7b72= Te6edf3savedTb4b4b4.Te6edf3relaySidebarCollapsedTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3savedTb4b4b4.Te6edf3expandedHubs Tff7b72&& Tff7b72typeof Te6edf3savedTb4b4b4.Te6edf3expandedHubs Tff7b72=== Ta5d6ff"object"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3expandedHubs Tff7b72= Tb4b4b4{ Tb4b4b4...Te6edf3savedTb4b4b4.Te6edf3expandedHubs Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3savedTb4b4b4.Te6edf3availableRoomsExpanded Tff7b72&& Tff7b72typeof Te6edf3savedTb4b4b4.Te6edf3availableRoomsExpanded Tff7b72=== Ta5d6ff"object"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3availableRoomsExpanded Tff7b72= Tb4b4b4{ Tb4b4b4...Te6edf3savedTb4b4b4.Te6edf3availableRoomsExpanded Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3savedTb4b4b4.Te6edf3selectedHubHash Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4.Te6edf3hub_hash Tff7b72=== Te6edf3savedTb4b4b4.Te6edf3selectedHubHashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3savedTb4b4b4.Te6edf3selectedHubHashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3savedTb4b4b4.Te6edf3selectedHubHashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72const Te6edf3hub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4.Te6edf3hub_hash Tff7b72=== Te6edf3savedTb4b4b4.Te6edf3selectedHubHashTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3rooms Tff7b72= Te6edf3hub Tff7b72? Tff7b72thisTb4b4b4.Te6edf3orderedRoomsForTb4b4b4(Te6edf3hubTb4b4b4) Tff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3savedTb4b4b4.Te6edf3selectedRoom Tff7b72&& Te6edf3roomsTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3savedTb4b4b4.Te6edf3selectedRoomTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectRoomTb4b4b4(Te6edf3savedTb4b4b4.Te6edf3selectedHubHashTb4b4b4, Te6edf3savedTb4b4b4.Te6edf3selectedRoomTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3roomsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectRoomTb4b4b4(Te6edf3savedTb4b4b4.Te6edf3selectedHubHashTb4b4b4, Te6edf3roomsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3orderedRoomsForTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hub Tff7b72|| Tff7b72!Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3known_roomsTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3hubTb4b4b4.Te6edf3known_roomsTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3availableRoomsForTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3unjoinedAvailableRoomsTb4b4b4(Te6edf3hubTff7b72?Tb4b4b4.Te6edf3available_roomsTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3orderedRoomsForTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onCollapsedHubClickTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3rooms Tff7b72= Tff7b72thisTb4b4b4.Te6edf3orderedRoomsForTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3roomsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectRoomTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4, Te6edf3roomsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3isExpandedTb4b4b4(Te6edf3hubHashTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72!Tff7b72!Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3hubHashTb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3toggleHubTb4b4b4(Te6edf3hubHashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3hubHashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3hubHashTb4b4b4] Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3hubHashTb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3persistRelayLayoutTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isAvailableRoomsExpandedTb4b4b4(Te6edf3hubHashTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3availableRoomsExpandedTb4b4b4[Te6edf3hubHashTb4b4b4] Tff7b72!== Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3toggleAvailableRoomsTb4b4b4(Te6edf3hubHashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3availableRoomsExpandedTb4b4b4[Te6edf3hubHashTb4b4b4] Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3isAvailableRoomsExpandedTb4b4b4(Te6edf3hubHashTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3persistRelayLayoutTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isRefreshingAvailableRoomsTb4b4b4(Te6edf3hubHashTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72!Tff7b72!Tff7b72thisTb4b4b4.Te6edf3availableRoomsRefreshingTb4b4b4[Te6edf3hubHashTb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3refreshAvailableRoomsTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubTff7b72?Tb4b4b4.Te6edf3hub_hash Tff7b72|| Tff7b72!Te6edf3hubTb4b4b4.Te6edf3connected Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isRefreshingAvailableRoomsTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3availableRoomsRefreshing Tff7b72= Tb4b4b4{
Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3availableRoomsRefreshingTb4b4b4,
Tb4b4b4[Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4]Tff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Te6edf3hubTb4b4b4.Te6edf3hub_hashTffd700}Ta5d6ff/rooms/listTa5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.rooms_list_requested"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72const Te6edf3next Tff7b72= Tb4b4b4{ Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3availableRoomsRefreshing Tb4b4b4}Tb4b4b4;
Tff7b72delete Te6edf3nextTb4b4b4[Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3availableRoomsRefreshing Tff7b72= Te6edf3nextTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3hostedHubUptimeSecondsTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72void Tff7b72thisTb4b4b4.Te6edf3hostUptimeTickTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubTff7b72?Tb4b4b4.Te6edf3runningTb4b4b4) Tb4b4b4{
Tff7b72return T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3base Tff7b72= Tffa657NumberTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3uptime_secondsTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3baseTb4b4b4) Tff7b72|| Te6edf3base Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3hostUptimeAnchorMsTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3baseTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3base Tff7b72+ Tb4b4b4(Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4) Tff7b72- Tff7b72thisTb4b4b4.Te6edf3hostUptimeAnchorMsTb4b4b4) Tff7b72/ T79c0ff1000Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatUptimeTb4b4b4(Te6edf3secondsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3seconds Tff7b72== Tff7b72null Tff7b72|| Te6edf3seconds Tff7b72< T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"-"Tb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3s Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3secondsTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3s Tff7b72< T79c0ff60Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Te6edf3sTffd700}Ta5d6ffsTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3s Tff7b72< T79c0ff3600Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3s Tff7b72/ T79c0ff60Tb4b4b4)Tffd700}Ta5d6ffmTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3s Tff7b72< T79c0ff86400Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3s Tff7b72/ T79c0ff3600Tb4b4b4)Tffd700}Ta5d6ffhTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3s Tff7b72< T79c0ff30 Tff7b72* T79c0ff86400Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Tffd700${Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3s Tff7b72/ T79c0ff86400Tb4b4b4)Tffd700}Ta5d6ffdTa5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3yearSec Tff7b72= T79c0ff365 Tff7b72* T79c0ff86400Tb4b4b4;
Tff7b72const Te6edf3monthSec Tff7b72= T79c0ff30 Tff7b72* T79c0ff86400Tb4b4b4;
Tff7b72const Te6edf3years Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3s Tff7b72/ Te6edf3yearSecTb4b4b4)Tb4b4b4;
Te6edf3s Tff7b72-= Te6edf3years Tff7b72* Te6edf3yearSecTb4b4b4;
Tff7b72const Te6edf3months Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3s Tff7b72/ Te6edf3monthSecTb4b4b4)Tb4b4b4;
Te6edf3s Tff7b72-= Te6edf3months Tff7b72* Te6edf3monthSecTb4b4b4;
Tff7b72const Te6edf3days Tff7b72= Tffa657MathTb4b4b4.Te6edf3floorTb4b4b4(Te6edf3s Tff7b72/ T79c0ff86400Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3parts Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3yearsTb4b4b4) Tb4b4b4{
Te6edf3partsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Tffd700${Te6edf3yearsTffd700}Ta5d6ffyTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3monthsTb4b4b4) Tb4b4b4{
Te6edf3partsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Tffd700${Te6edf3monthsTffd700}Ta5d6ffmoTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3daysTb4b4b4) Tb4b4b4{
Te6edf3partsTb4b4b4.Te6edf3pushTb4b4b4(Ta5d6ff`Tffd700${Te6edf3daysTffd700}Ta5d6ffdTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3partsTb4b4b4.Te6edf3length Tff7b72? Te6edf3partsTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff" "Tb4b4b4) Tff7b72: Ta5d6ff"0d"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onCreateAnnounceIntervalSliderTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3minutes Tff7b72= Te6edf3announceSliderPosToMinutesTb4b4b4(Te6edf3eventTff7b72?Tb4b4b4.Te6edf3targetTff7b72?Tb4b4b4.Te6edf3valueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3createHubFormTb4b4b4.Te6edf3announce_interval_seconds Tff7b72= Te6edf3minutes Tff7b72* T79c0ff60Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalDraft Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onCreateAnnounceIntervalFocusTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalDraft Tff7b72= Tffa657StringTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalMinutesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onCreateAnnounceIntervalInputTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Tffa657StringTb4b4b4(Te6edf3eventTff7b72?Tb4b4b4.Te6edf3targetTff7b72?Tb4b4b4.Te6edf3value Tff7b72?? Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\D/gTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalDraft Tff7b72= Te6edf3rawTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3raw Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3minutes Tff7b72= Tffa657NumberTb4b4b4.Tffa657parseIntTb4b4b4(Te6edf3rawTb4b4b4, T79c0ff10Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3minutesTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3createHubFormTb4b4b4.Te6edf3announce_interval_seconds Tff7b72= Te6edf3clampAnnounceIntervalMinutesTb4b4b4(Te6edf3minutesTb4b4b4) Tff7b72* T79c0ff60Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onCreateAnnounceIntervalBlurTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3minutes Tff7b72= Te6edf3clampAnnounceIntervalMinutesTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalDraft Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalMinutes
Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3createHubFormTb4b4b4.Te6edf3announce_interval_seconds Tff7b72= Te6edf3minutes Tff7b72* T79c0ff60Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalDraft Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onHostAnnounceIntervalSliderTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3minutes Tff7b72= Te6edf3announceSliderPosToMinutesTb4b4b4(Te6edf3eventTff7b72?Tb4b4b4.Te6edf3targetTff7b72?Tb4b4b4.Te6edf3valueTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostHubSettingsFormTb4b4b4.Te6edf3announce_interval_seconds Tff7b72= Te6edf3minutes Tff7b72* T79c0ff60Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalDraft Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onHostAnnounceIntervalFocusTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalDraft Tff7b72= Tffa657StringTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalMinutesTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onHostAnnounceIntervalInputTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3raw Tff7b72= Tffa657StringTb4b4b4(Te6edf3eventTff7b72?Tb4b4b4.Te6edf3targetTff7b72?Tb4b4b4.Te6edf3value Tff7b72?? Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\D/gTb4b4b4, Ta5d6ff""Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalDraft Tff7b72= Te6edf3rawTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3raw Tff7b72=== Ta5d6ff""Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3minutes Tff7b72= Tffa657NumberTb4b4b4.Tffa657parseIntTb4b4b4(Te6edf3rawTb4b4b4, T79c0ff10Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657NumberTb4b4b4.Tffa657isFiniteTb4b4b4(Te6edf3minutesTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hostHubSettingsFormTb4b4b4.Te6edf3announce_interval_seconds Tff7b72= Te6edf3clampAnnounceIntervalMinutesTb4b4b4(Te6edf3minutesTb4b4b4) Tff7b72* T79c0ff60Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onHostAnnounceIntervalBlurTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3minutes Tff7b72= Te6edf3clampAnnounceIntervalMinutesTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalDraft Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalMinutes
Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostHubSettingsFormTb4b4b4.Te6edf3announce_interval_seconds Tff7b72= Te6edf3minutes Tff7b72* T79c0ff60Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalDraft Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openHostHubSettingsTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hostHubSettingsId Tff7b72= Te6edf3hubTb4b4b4.Te6edf3idTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostHubSettingsForm Tff7b72= Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3hubTb4b4b4.Te6edf3name Tff7b72|| Ta5d6ff""Tb4b4b4,
Te6edf3announceTff7b72: Te6edf3hubTb4b4b4.Te6edf3announce Tff7b72!== Tff7b72falseTb4b4b4,
Te6edf3announce_interval_secondsTff7b72:
Te6edf3hubTb4b4b4.Te6edf3announce_interval_seconds Tff7b72> T79c0ff0
Tff7b72? Te6edf3hubTb4b4b4.Te6edf3announce_interval_seconds
Tff7b72: Te6edf3DEFAULT_ANNOUNCE_INTERVAL_SECONDSTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostAnnounceIntervalDraft Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showHostHubSettings Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveHostHubSettingsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3hostHubSettingsIdTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/servers/Tffd700${Tff7b72thisTb4b4b4.Te6edf3hostHubSettingsIdTffd700}Ta5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3hostHubSettingsFormTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72undefinedTb4b4b4,
Te6edf3announceTff7b72: Tff7b72thisTb4b4b4.Te6edf3hostHubSettingsFormTb4b4b4.Te6edf3announceTb4b4b4,
Te6edf3announce_interval_secondsTff7b72: Tff7b72thisTb4b4b4.Te6edf3hostHubSettingsFormTb4b4b4.Te6edf3announce_interval_secondsTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showHostHubSettings Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.settings_saved"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3statusLabelTb4b4b4(Te6edf3statusTb4b4b4) Tb4b4b4{
Tff7b72switch Tb4b4b4(Te6edf3statusTb4b4b4) Tb4b4b4{
Tff7b72case T79c0ff1Tff7b72:
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.status_connecting"Tb4b4b4)Tb4b4b4;
Tff7b72case T79c0ff2Tff7b72:
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.status_connected"Tb4b4b4)Tb4b4b4;
Tff7b72case T79c0ff3Tff7b72:
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.status_failed"Tb4b4b4)Tb4b4b4;
Tff7b72defaultTff7b72:
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.status_disconnected"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3statusTextColorTb4b4b4(Te6edf3statusTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3status Tff7b72=== T79c0ff2Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sem-success"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3status Tff7b72=== T79c0ff3Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sem-danger"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"text-sem-fg-muted"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3statusIconColorTb4b4b4(Te6edf3statusTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3status Tff7b72=== T79c0ff2Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sem-success"Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3status Tff7b72=== T79c0ff1Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"text-sem-warning"Tb4b4b4;
Tb4b4b4}
Tff7b72return Ta5d6ff"text-sem-danger"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hubIconNameTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3DEFAULT_RRC_HUB_ICONTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3normalizeMdiIconNameTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_iconTb4b4b4) Tff7b72|| Te6edf3DEFAULT_RRC_HUB_ICONTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hubDisplayNameTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3hubTb4b4b4.Te6edf3display_nameTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3hubTb4b4b4.Te6edf3display_nameTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3hubTb4b4b4.Te6edf3name Tff7b72|| Ta5d6ff""Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatUnreadBadgeTb4b4b4(Te6edf3countTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3n Tff7b72= Tffa657NumberTb4b4b4(Te6edf3countTb4b4b4) Tff7b72|| T79c0ff0Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3n Tff7b72<= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3n Tff7b72>= T79c0ff1000Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"999+"Tb4b4b4;
Tb4b4b4}
Tff7b72return Tffa657StringTb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3hubTotalUnreadTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3hubTb4b4b4.Te6edf3total_unread Tff7b72=== Ta5d6ff"number"Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3hubTb4b4b4.Te6edf3total_unreadTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3counts Tff7b72= Te6edf3hubTb4b4b4.Te6edf3unread_countsTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3counts Tff7b72&& Tff7b72typeof Te6edf3counts Tff7b72=== Ta5d6ff"object"Tb4b4b4) Tb4b4b4{
Tff7b72return Tffa657ObjectTb4b4b4.Te6edf3valuesTb4b4b4(Te6edf3countsTb4b4b4)Tb4b4b4.Te6edf3reduceTb4b4b4(Tb4b4b4(Te6edf3aTb4b4b4, Te6edf3bTb4b4b4) Tb4b4b4=> Te6edf3a Tff7b72+ Tb4b4b4(Tffa657NumberTb4b4b4(Te6edf3bTb4b4b4) Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3hubTb4b4b4.Te6edf3unread_rooms Tff7b72? Te6edf3hubTb4b4b4.Te6edf3unread_roomsTb4b4b4.Te6edf3length Tff7b72: T79c0ff0Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3roomUnreadCountTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3counts Tff7b72= Te6edf3hubTb4b4b4.Te6edf3unread_countsTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3counts Tff7b72&& Tff7b72typeof Te6edf3counts Tff7b72=== Ta5d6ff"object" Tff7b72&& Te6edf3countsTb4b4b4[Te6edf3roomTb4b4b4] Tff7b72!= Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657NumberTb4b4b4(Te6edf3countsTb4b4b4[Te6edf3roomTb4b4b4]Tb4b4b4) Tff7b72|| T79c0ff0Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3hubTb4b4b4.Te6edf3unread_rooms Tff7b72&& Te6edf3hubTb4b4b4.Te6edf3unread_roomsTb4b4b4.Te6edf3includesTb4b4b4(Te6edf3roomTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return T79c0ff1Tb4b4b4;
Tb4b4b4}
Tff7b72return T79c0ff0Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3updateUnreadBadgeTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3GlobalStateTb4b4b4.Te6edf3relayChatUnreadCount Tff7b72= Te6edf3countRelayMentionsTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onSmMqChangeTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3smUp Tff7b72= Tff7b72thisTb4b4b4.Te6edf3smMqTb4b4b4.Te6edf3matchesTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onHubDragStartTb4b4b4(Te6edf3indexTb4b4b4, Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3dragHubIndex Tff7b72= Te6edf3indexTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4.Te6edf3effectAllowed Tff7b72= Ta5d6ff"move"Tb4b4b4;
Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4.Te6edf3setDataTb4b4b4(Ta5d6ff"text/plain"Tb4b4b4, Tffa657StringTb4b4b4(Te6edf3indexTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onHubDragOverTb4b4b4(Te6edf3indexTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3dragHubIndex Tff7b72=== Tff7b72null Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3dragHubIndex Tff7b72=== Te6edf3indexTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3hubs Tff7b72= Tb4b4b4[Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4]Tb4b4b4;
Tff7b72const Tb4b4b4[Te6edf3movedTb4b4b4] Tff7b72= Te6edf3hubsTb4b4b4.Te6edf3spliceTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3dragHubIndexTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3hubsTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3indexTb4b4b4, T79c0ff0Tb4b4b4, Te6edf3movedTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hubs Tff7b72= Te6edf3hubsTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3dragHubIndex Tff7b72= Te6edf3indexTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onHubDropTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3dragHubIndex Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3putTb4b4b4(Ta5d6ff"/api/v1/rrc/hubs/order"Tb4b4b4, Tb4b4b4{
Te6edf3hub_hashesTff7b72: Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4.Te6edf3hub_hashTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onRoomDragStartTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomIndexTb4b4b4, Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3orderedRoomsForTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4.Te6edf3length Tff7b72<= T79c0ff1Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3dragRoomHubHash Tff7b72= Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3dragRoomIndex Tff7b72= Te6edf3roomIndexTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4) Tb4b4b4{
Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4.Te6edf3effectAllowed Tff7b72= Ta5d6ff"move"Tb4b4b4;
Te6edf3eventTb4b4b4.Te6edf3dataTransferTb4b4b4.Te6edf3setDataTb4b4b4(Ta5d6ff"text/plain"Tb4b4b4, Tffa657StringTb4b4b4(Te6edf3roomIndexTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onRoomDragOverTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomIndexTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3dragRoomHubHash Tff7b72!== Te6edf3hubTb4b4b4.Te6edf3hub_hash Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3dragRoomIndex Tff7b72=== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3dragRoomIndex Tff7b72=== Te6edf3roomIndexTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3rooms Tff7b72= Tb4b4b4[Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3orderedRoomsForTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4]Tb4b4b4;
Tff7b72const Tb4b4b4[Te6edf3movedTb4b4b4] Tff7b72= Te6edf3roomsTb4b4b4.Te6edf3spliceTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3dragRoomIndexTb4b4b4, T79c0ff1Tb4b4b4)Tb4b4b4;
Te6edf3roomsTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3roomIndexTb4b4b4, T79c0ff0Tb4b4b4, Te6edf3movedTb4b4b4)Tb4b4b4;
Te6edf3hubTb4b4b4.Te6edf3known_rooms Tff7b72= Te6edf3roomsTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3dragRoomIndex Tff7b72= Te6edf3roomIndexTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onRoomDropTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3dragRoomHubHash Tff7b72!== Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3onRoomDragEndTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3putTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Te6edf3hubTb4b4b4.Te6edf3hub_hashTffd700}Ta5d6ff/rooms/orderTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3room_namesTff7b72: Tff7b72thisTb4b4b4.Te6edf3orderedRoomsForTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onRoomDragEndTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3dragRoomHubHash Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3dragRoomIndex Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openSidebarContextMenuTb4b4b4(Te6edf3eventTb4b4b4, Tb4b4b4{ Te6edf3hub Tff7b72= Tff7b72nullTb4b4b4, Te6edf3room Tff7b72= Tff7b72null Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3sidebarMenu Tff7b72= Tb4b4b4{
Te6edf3showTff7b72: Tff7b72trueTb4b4b4,
Te6edf3xTff7b72: Te6edf3eventTb4b4b4.Te6edf3clientXTb4b4b4,
Te6edf3yTff7b72: Te6edf3eventTb4b4b4.Te6edf3clientYTb4b4b4,
Te6edf3hubTb4b4b4,
Te6edf3roomTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeMessageMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeSidebarMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3sidebarMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openMessageContextMenuTb4b4b4(Te6edf3eventTb4b4b4, Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3msg Tff7b72|| Te6edf3msgTb4b4b4.Te6edf3kind Tff7b72=== Ta5d6ff"system" Tff7b72|| Te6edf3msgTb4b4b4.Te6edf3kind Tff7b72=== Ta5d6ff"notice" Tff7b72|| Te6edf3msgTb4b4b4.Te6edf3kind Tff7b72=== Ta5d6ff"error"Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3messageMenu Tff7b72= Tb4b4b4{
Te6edf3showTff7b72: Tff7b72trueTb4b4b4,
Te6edf3xTff7b72: Te6edf3eventTb4b4b4.Te6edf3clientXTb4b4b4,
Te6edf3yTff7b72: Te6edf3eventTb4b4b4.Te6edf3clientYTb4b4b4,
Te6edf3msgTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeSidebarMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeMessageMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3messageMenuTb4b4b4.Te6edf3show Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openAddHubFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3closeSidebarMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3openAddHubTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3focusJoinRoomFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeSidebarMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Te6edf3nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3inputs Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$elTff7b72?Tb4b4b4.Te6edf3querySelectorAllTff7b72?Tb4b4b4.Tb4b4b4(Ta5d6ff"input.input-field"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3inputs Tff7b72&& Te6edf3inputsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3inputsTb4b4b4[Te6edf3inputsTb4b4b4.Te6edf3length Tff7b72- T79c0ff1Tb4b4b4]Tb4b4b4.Te6edf3focusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3connectHubFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeSidebarMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3connectHubTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3disconnectHubFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeSidebarMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3disconnectHubTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3openSettingsFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeSidebarMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3openSettingsTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3copyHubAddressFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeSidebarMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hubTff7b72?Tb4b4b4.Te6edf3hub_hashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3copyHashTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3shareHubFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72const Te6edf3room Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sidebarMenuTb4b4b4.Te6edf3roomTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeSidebarMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3shareHubLinkTb4b4b4(Tb4b4b4{
Te6edf3hub_hashTff7b72: Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4,
Te6edf3nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3hubDisplayNameTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4,
Te6edf3roomTff7b72: Te6edf3room Tff7b72|| Ta5d6ff""Tb4b4b4,
Te6edf3aspectTff7b72: Te6edf3hubTb4b4b4.Te6edf3dest_name Tff7b72|| Ta5d6ff""Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3leaveRoomFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72const Te6edf3room Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sidebarMenuTb4b4b4.Te6edf3roomTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeSidebarMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hub Tff7b72|| Tff7b72!Te6edf3roomTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72=== Te6edf3hubTb4b4b4.Te6edf3hub_hash Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3selectedRoom Tff7b72=== Te6edf3roomTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3leaveRoomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3confirmed Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmCustomTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.leave_room_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3confirmedTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Te6edf3hubTb4b4b4.Te6edf3hub_hashTffd700}Ta5d6ff/rooms/Tffd700${Tff7b72thisTb4b4b4.Te6edf3encodeRoomTb4b4b4(Te6edf3roomTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.left_room"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3removeHubFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3sidebarMenuTb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeSidebarMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3removeHubTb4b4b4(Te6edf3hubTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3canQuoteMessageTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657BooleanTb4b4b4(Te6edf3msg Tff7b72&& Tff7b72typeof Te6edf3msgTb4b4b4.Te6edf3text Tff7b72=== Ta5d6ff"string" Tff7b72&& Te6edf3msgTb4b4b4.Te6edf3textTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3canMentionMessageAuthorTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3msg Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedHubTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3name Tff7b72= Tff7b72thisTb4b4b4.Te6edf3displayNameTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4;
Tff7b72return Tffa657BooleanTb4b4b4(Te6edf3name Tff7b72&& Te6edf3msgTb4b4b4.Te6edf3kind Tff7b72=== Ta5d6ff"msg"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3replyWithQuoteFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3msg Tff7b72= Tff7b72thisTb4b4b4.Te6edf3messageMenuTb4b4b4.Te6edf3msgTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeMessageMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3author Tff7b72= Tff7b72thisTb4b4b4.Te6edf3displayNameTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3prefix Tff7b72= Ta5d6ff`Ta5d6ff> Tffd700${Te6edf3authorTffd700}Ta5d6ff: Tffd700${Te6edf3msgTb4b4b4.Te6edf3textTffd700}Ta5d6ff\nTa5d6ff\nTa5d6ff`Tb4b4b4;
Tff7b72const Te6edf3cur Tff7b72= Tff7b72thisTb4b4b4.Te6edf3composer Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3composer Tff7b72= Te6edf3cur Tff7b72+ Tb4b4b4(Te6edf3cur Tff7b72&& Tff7b72!Te6edf3curTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff"\n"Tb4b4b4) Tff7b72? Ta5d6ff"\n" Tff7b72: Ta5d6ff""Tb4b4b4) Tff7b72+ Te6edf3prefixTb4b4b4;
Te6edf3nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3composerInputTff7b72?Tb4b4b4.Te6edf3focusTff7b72?Tb4b4b4.Tb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3mentionUserFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3msg Tff7b72= Tff7b72thisTb4b4b4.Te6edf3messageMenuTb4b4b4.Te6edf3msgTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeMessageMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3insertMentionTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3displayNameTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3copyMessageFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3msg Tff7b72= Tff7b72thisTb4b4b4.Te6edf3messageMenuTb4b4b4.Te6edf3msgTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeMessageMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3msgTff7b72?Tb4b4b4.Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3msgTb4b4b4.Te6edf3textTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"common.copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"common.failed_to_copy"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3sendModerationCommandTb4b4b4(Te6edf3templateTb4b4b4, Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedHub Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedRoom Tff7b72|| Tff7b72!Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
T8b949e// Prefer identity hash so spaced/ambiguous nicks cannot mis-target.
Tff7b72const Te6edf3target Tff7b72=
Tff7b72typeof Te6edf3msgTb4b4b4.Te6edf3src Tff7b72=== Ta5d6ff"string" Tff7b72&& Ta5d6ff/^[a-fA-F0-9]{8,64}$/Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3msgTb4b4b4.Te6edf3srcTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4)
Tff7b72? Te6edf3msgTb4b4b4.Te6edf3srcTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)
Tff7b72: Tff7b72thisTb4b4b4.Te6edf3displayNameTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3room Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4;
Tff7b72const Te6edf3text Tff7b72= Te6edf3templateTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"{room}"Tb4b4b4, Te6edf3roomTb4b4b4)Tb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff"{target}"Tb4b4b4, Te6edf3targetTb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedHubHashTffd700}Ta5d6ff/commandTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3textTb4b4b4,
Te6edf3roomTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"common.success"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3kickUserFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3msg Tff7b72= Tff7b72thisTb4b4b4.Te6edf3messageMenuTb4b4b4.Te6edf3msgTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeMessageMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sendModerationCommandTb4b4b4(Ta5d6ff"/kick {room} {target}"Tb4b4b4, Te6edf3msgTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3banUserFromMenuTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3msg Tff7b72= Tff7b72thisTb4b4b4.Te6edf3messageMenuTb4b4b4.Te6edf3msgTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3closeMessageMenuTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sendModerationCommandTb4b4b4(Ta5d6ff"/ban {room} add {target}"Tb4b4b4, Te6edf3msgTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3insertMentionTb4b4b4(Te6edf3nameTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3nameTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3mention Tff7b72= Ta5d6ff"@" Tff7b72+ Te6edf3nameTb4b4b4.Te6edf3replaceTb4b4b4(Ta5d6ff/\s/gTb4b4b4, Ta5d6ff""Tb4b4b4) Tff7b72+ Ta5d6ff" "Tb4b4b4;
Tff7b72const Te6edf3cur Tff7b72= Tff7b72thisTb4b4b4.Te6edf3composer Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3composer Tff7b72= Te6edf3cur Tff7b72+ Tb4b4b4(Te6edf3cur Tff7b72&& Tff7b72!Te6edf3curTb4b4b4.Te6edf3endsWithTb4b4b4(Ta5d6ff" "Tb4b4b4) Tff7b72? Ta5d6ff" " Tff7b72: Ta5d6ff""Tb4b4b4) Tff7b72+ Te6edf3mentionTb4b4b4;
Te6edf3nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3el Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3composerInputTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3el Tff7b72&& Tff7b72typeof Te6edf3elTb4b4b4.Te6edf3focus Tff7b72=== Ta5d6ff"function"Tb4b4b4) Tb4b4b4{
Te6edf3elTb4b4b4.Te6edf3focusTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3popoutChannelTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3hub Tff7b72= Tffa657encodeURIComponentTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedHubHashTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3roomPath Tff7b72= Tffa657encodeURIComponentTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3url Tff7b72= Ta5d6ff`Tffd700${Tffa657windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3originTffd700}Tffd700${Tffa657windowTb4b4b4.Te6edf3locationTb4b4b4.Te6edf3pathnameTffd700}Ta5d6ff#/popout/relay-chat/Tffd700${Te6edf3hubTffd700}Ta5d6ff/Tffd700${Te6edf3roomPathTffd700}Ta5d6ff`Tb4b4b4;
Tffa657windowTb4b4b4.Te6edf3openTb4b4b4(Te6edf3urlTb4b4b4, Ta5d6ff"_blank"Tb4b4b4, Ta5d6ff"width=900,height=700,noopener"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3applyPopoutRouteTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hubHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3hubHash Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3paramsTff7b72?Tb4b4b4.Te6edf3hubHashTb4b4b4;
Tff7b72const Te6edf3routeRoom Tff7b72= Tff7b72thisTb4b4b4.Te6edf3room Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3paramsTff7b72?Tb4b4b4.Te6edf3roomTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubHashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3view Tff7b72= Ta5d6ff"chat"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Tffa657decodeURIComponentTb4b4b4(Te6edf3hubHashTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Tff7b72thisTb4b4b4.Te6edf3selectedHubHashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3routeRoomTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectRoomTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedHubHashTb4b4b4, Tffa657decodeURIComponentTb4b4b4(Te6edf3routeRoomTb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3applyRouteQueryTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hubHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3queryTff7b72?Tb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72const Te6edf3routeRoom Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3queryTff7b72?Tb4b4b4.Te6edf3roomTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubHash Tff7b72|| Tff7b72typeof Te6edf3hubHash Tff7b72!== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3view Tff7b72= Ta5d6ff"chat"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3hubHashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3hubHashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3routeRoom Tff7b72&& Tff7b72typeof Te6edf3routeRoom Tff7b72=== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectRoomTb4b4b4(Te6edf3hubHashTb4b4b4, Te6edf3routeRoomTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3messageKeyTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3relayMessageKeyTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3timelineEntryKeyTb4b4b4(Te6edf3entryTb4b4b4, Te6edf3index Tff7b72= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3entryTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"dateDivider"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Ta5d6ffdate-Tffd700${Te6edf3entryTb4b4b4.Te6edf3dayKeyTffd700}Ta5d6ff-Tffd700${Te6edf3indexTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3entryTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"presenceGroup"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff`Ta5d6ffpresence-Tffd700${Te6edf3entryTb4b4b4.Te6edf3idTffd700}Ta5d6ff-Tffd700${Te6edf3indexTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3msgKey Tff7b72= Tff7b72thisTb4b4b4.Te6edf3messageKeyTb4b4b4(Te6edf3entryTb4b4b4.Te6edf3msgTb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3msgKey Tff7b72? Ta5d6ff`Tffd700${Te6edf3msgKeyTffd700}Ta5d6ff-Tffd700${Te6edf3indexTffd700}Ta5d6ff` Tff7b72: Ta5d6ff`Ta5d6ffidx-Tffd700${Te6edf3indexTffd700}Ta5d6ff`Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isPresenceGroupExpandedTb4b4b4(Te6edf3groupIdTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72!Tff7b72!Tff7b72thisTb4b4b4.Te6edf3expandedPresenceGroupsTb4b4b4[Te6edf3groupIdTb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3togglePresenceGroupTb4b4b4(Te6edf3groupIdTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3groupIdTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3expandedPresenceGroupsTb4b4b4[Te6edf3groupIdTb4b4b4] Tff7b72= Tff7b72!Tff7b72thisTb4b4b4.Te6edf3expandedPresenceGroupsTb4b4b4[Te6edf3groupIdTb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatPresenceGroupSummaryTb4b4b4(Te6edf3entryTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3joined Tff7b72= Tffa657NumberTb4b4b4(Te6edf3entryTff7b72?Tb4b4b4.Te6edf3joinedCountTb4b4b4) Tff7b72|| T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3left Tff7b72= Tffa657NumberTb4b4b4(Te6edf3entryTff7b72?Tb4b4b4.Te6edf3leftCountTb4b4b4) Tff7b72|| T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3connection Tff7b72= Tffa657NumberTb4b4b4(Te6edf3entryTff7b72?Tb4b4b4.Te6edf3connectionCountTb4b4b4) Tff7b72|| T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3parts Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3joined Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3partsTb4b4b4.Te6edf3pushTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.presence_joined"Tb4b4b4, Tb4b4b4{ Te6edf3countTff7b72: Te6edf3joined Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3left Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3partsTb4b4b4.Te6edf3pushTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.presence_left"Tb4b4b4, Tb4b4b4{ Te6edf3countTff7b72: Te6edf3left Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3connection Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Te6edf3partsTb4b4b4.Te6edf3pushTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.presence_connection"Tb4b4b4, Tb4b4b4{ Te6edf3countTff7b72: Te6edf3connection Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3partsTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.presence_events"Tb4b4b4, Tb4b4b4{
Te6edf3countTff7b72: Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3entryTff7b72?Tb4b4b4.Te6edf3messagesTb4b4b4) Tff7b72? Te6edf3entryTb4b4b4.Te6edf3messagesTb4b4b4.Te6edf3length Tff7b72: T79c0ff0Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3partsTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff" · "Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatDateDividerLabelTb4b4b4(Te6edf3dayKeyTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3dayKey Tff7b72|| Tff7b72typeof Te6edf3dayKey Tff7b72!== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3p Tff7b72= Te6edf3dayKeyTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff"-"Tb4b4b4)Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3xTb4b4b4) Tb4b4b4=> Tffa657parseIntTb4b4b4(Te6edf3xTb4b4b4, T79c0ff10Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3pTb4b4b4.Te6edf3length Tff7b72!== T79c0ff3 Tff7b72|| Te6edf3pTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3nTb4b4b4) Tb4b4b4=> Tffa657NumberTb4b4b4.Tffa657isNaNTb4b4b4(Te6edf3nTb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3dayKeyTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3d Tff7b72= Tff7b72new Tffa657DateTb4b4b4(Te6edf3pTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4, Te6edf3pTb4b4b4[T79c0ff1Tb4b4b4] Tff7b72- T79c0ff1Tb4b4b4, Te6edf3pTb4b4b4[T79c0ff2Tb4b4b4]Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tffa657NumberTb4b4b4.Tffa657isNaNTb4b4b4(Te6edf3dTb4b4b4.Te6edf3getTimeTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3dayKeyTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3startOf Tff7b72= Tb4b4b4(Te6edf3dtTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3x Tff7b72= Tff7b72new Tffa657DateTb4b4b4(Te6edf3dtTb4b4b4)Tb4b4b4;
Te6edf3xTb4b4b4.Te6edf3setHoursTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3xTb4b4b4.Te6edf3getTimeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3today Tff7b72= Tff7b72new Tffa657DateTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3startOfTb4b4b4(Te6edf3dTb4b4b4) Tff7b72=== Te6edf3startOfTb4b4b4(Te6edf3todayTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.date_divider_today"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3y Tff7b72= Tff7b72new Tffa657DateTb4b4b4(Te6edf3todayTb4b4b4)Tb4b4b4;
Te6edf3yTb4b4b4.Te6edf3setDateTb4b4b4(Te6edf3yTb4b4b4.Te6edf3getDateTb4b4b4(Tb4b4b4) Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3startOfTb4b4b4(Te6edf3dTb4b4b4) Tff7b72=== Te6edf3startOfTb4b4b4(Te6edf3yTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"messages.date_divider_yesterday"Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3loc Tff7b72= Tff7b72typeof Tff7b72thisTb4b4b4.Te6edf3$i18nTff7b72?Tb4b4b4.Te6edf3locale Tff7b72=== Ta5d6ff"string" Tff7b72? Tff7b72thisTb4b4b4.Te6edf3$i18nTb4b4b4.Te6edf3locale Tff7b72: Ta5d6ff"en"Tb4b4b4;
Tff7b72return Tff7b72new Tffa657IntlTb4b4b4.Te6edf3DateTimeFormatTb4b4b4(Te6edf3locTb4b4b4, Tb4b4b4{
Te6edf3weekdayTff7b72: Ta5d6ff"long"Tb4b4b4,
Te6edf3yearTff7b72: Ta5d6ff"numeric"Tb4b4b4,
Te6edf3monthTff7b72: Ta5d6ff"long"Tb4b4b4,
Te6edf3dayTff7b72: Ta5d6ff"numeric"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4.Te6edf3formatTb4b4b4(Te6edf3dTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Te6edf3dayKeyTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3scrollToMessageTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3showSearch Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3key Tff7b72= Tff7b72thisTb4b4b4.Te6edf3messageKeyTb4b4b4(Te6edf3msgTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3useVirtualMessageListTb4b4b4) Tb4b4b4{
Te6edf3nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messageListVirtualTff7b72?Tb4b4b4.Te6edf3scrollToMessageKeyTb4b4b4(Te6edf3keyTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Te6edf3nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3el Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messageListTff7b72?Tb4b4b4.Te6edf3querySelectorTb4b4b4(Ta5d6ff`Ta5d6ff[data-msg-key="Tffd700${Te6edf3keyTffd700}Ta5d6ff"]Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3elTff7b72?Tb4b4b4.Te6edf3scrollIntoViewTb4b4b4(Tb4b4b4{ Te6edf3blockTff7b72: Ta5d6ff"center"Tb4b4b4, Te6edf3behaviorTff7b72: Ta5d6ff"smooth" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3displayNameTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3nickTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3msgTb4b4b4.Te6edf3nickTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3msgTb4b4b4.Te6edf3srcTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3msgTb4b4b4.Te6edf3srcTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff0Tb4b4b4, T79c0ff12Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.system"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3colorForHashTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"inherit"Tb4b4b4;
Tb4b4b4}
Tff7b72let Te6edf3sum Tff7b72= T79c0ff0Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72let Te6edf3i Tff7b72= T79c0ff0Tb4b4b4; Te6edf3i Tff7b72< Te6edf3hashTb4b4b4.Te6edf3lengthTb4b4b4; Te6edf3iTff7b72++Tb4b4b4) Tb4b4b4{
Te6edf3sum Tff7b72= Tb4b4b4(Te6edf3sum Tff7b72+ Te6edf3hashTb4b4b4.Te6edf3charCodeAtTb4b4b4(Te6edf3iTb4b4b4)Tb4b4b4) Tff7b72% Te6edf3NAME_COLORSTb4b4b4.Te6edf3lengthTb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3NAME_COLORSTb4b4b4[Te6edf3sumTb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3nameStyleTb4b4b4(Te6edf3msgTb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{ Te6edf3colorTff7b72: Tff7b72thisTb4b4b4.Te6edf3colorForHashTb4b4b4(Te6edf3msgTb4b4b4.Te6edf3srcTb4b4b4) Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatTimeTb4b4b4(Te6edf3tsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3tsTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72return Tff7b72new Tffa657DateTb4b4b4(Te6edf3tsTb4b4b4)Tb4b4b4.Te6edf3toLocaleTimeStringTb4b4b4(Tb4b4b4[Tb4b4b4]Tb4b4b4, Tb4b4b4{ Te6edf3hourTff7b72: Ta5d6ff"2-digit"Tb4b4b4, Te6edf3minuteTff7b72: Ta5d6ff"2-digit" Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72return Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3renderMessageHtmlTb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3MarkdownRendererTb4b4b4.Te6edf3renderBasicTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3handleMessageHtmlClickTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hex32 Tff7b72= Ta5d6ff/^[a-fA-F0-9]{32}$/Tb4b4b4;
Tff7b72const Te6edf3routeName Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3metaTff7b72?Tb4b4b4.Te6edf3isPopout Tff7b72? Ta5d6ff"nomadnetwork-popout" Tff7b72: Ta5d6ff"nomadnetwork"Tb4b4b4;
Te6edf3handleRichHtmlLinkClickTb4b4b4(Te6edf3eventTb4b4b4, Tb4b4b4{
Te6edf3onNomadUrlTff7b72: Tb4b4b4(Te6edf3urlTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Tb4b4b4[Te6edf3hashTb4b4b4, Tb4b4b4...Te6edf3pathPartsTb4b4b4] Tff7b72= Te6edf3urlTb4b4b4.Te6edf3splitTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3path Tff7b72= Te6edf3pathPartsTb4b4b4.Te6edf3joinTb4b4b4(Ta5d6ff":"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hex32Tb4b4b4.Te6edf3testTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Te6edf3routeNameTb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3destinationHashTff7b72: Te6edf3hash Tb4b4b4}Tb4b4b4,
Te6edf3queryTff7b72: Tb4b4b4{ Te6edf3path Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onLxmfAddressTff7b72: Tb4b4b4(Te6edf3addressTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$routerTb4b4b4.Te6edf3pushTb4b4b4(Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"messages"Tb4b4b4,
Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3destinationHashTff7b72: Te6edf3address Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3formatHashTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72return Ta5d6ff"-"Tb4b4b4;
Tb4b4b4}
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatDestinationHashTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3timeAgoTb4b4b4(Te6edf3datetimeTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3UtilsTb4b4b4.Te6edf3formatTimeAgoForI18nTb4b4b4(Te6edf3datetimeTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3encodeRoomTb4b4b4(Te6edf3roomTb4b4b4) Tb4b4b4{
Tff7b72return Tffa657encodeURIComponentTb4b4b4(Te6edf3roomTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3fetchHubsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/rrc/hubs"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hubs Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3hubs Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4.Te6edf3length Tff7b72> T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3hub_hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4.Te6edf3hub_hashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3updateUnreadBadgeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// relay chat may be unavailable for this identity
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3selectHubTb4b4b4(Te6edf3hubHashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3hubHashTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3selectRoomTb4b4b4(Te6edf3hubHashTb4b4b4, Te6edf3roomTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3hubHashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedRoom Tff7b72= Te6edf3roomTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3hubHashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedPresenceGroups Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4;
T8b949e// Clear before fetch so only websocket arrivals during the request are merged back.
Tff7b72thisTb4b4b4.Te6edf3messages Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3members Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72const Te6edf3seq Tff7b72= Tff7b72++Tff7b72thisTb4b4b4.Te6edf3roomSelectSequenceTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Te6edf3hubHashTffd700}Ta5d6ff/rooms/Tffd700${Tff7b72thisTb4b4b4.Te6edf3encodeRoomTb4b4b4(Te6edf3roomTb4b4b4)Tffd700}Ta5d6ff/messagesTa5d6ff`Tb4b4b4,
Tb4b4b4{ Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3limitTff7b72: Te6edf3RELAY_MESSAGES_INITIAL_PAGE_SIZE Tb4b4b4} Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3seq Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3roomSelectSequenceTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3loaded Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3messages Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messages Tff7b72= Te6edf3mergeRelayMessagesTb4b4b4(Te6edf3loadedTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3messagesTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3members Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3members Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72= Tffa657BooleanTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3has_moreTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scrollToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Always dismiss unread for the opened room (including layout restore /
T8b949e// page navigation when the room was already selected).
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3markRoomReadTb4b4b4(Te6edf3hubHashTb4b4b4, Te6edf3roomTb4b4b4, Tb4b4b4{ Te6edf3refreshHubsTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3persistRelayLayoutTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3seq Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3roomSelectSequenceTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3clearLocalRoomUnreadTb4b4b4(Te6edf3hubHashTb4b4b4, Te6edf3roomTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4.Te6edf3hub_hash Tff7b72=== Te6edf3hubHashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3mention_roomsTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3hubTb4b4b4.Te6edf3mention_rooms Tff7b72= Te6edf3hubTb4b4b4.Te6edf3mention_roomsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3r Tff7b72!== Te6edf3roomTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tffa657ArrayTb4b4b4.Te6edf3isArrayTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3unread_roomsTb4b4b4)Tb4b4b4) Tb4b4b4{
Te6edf3hubTb4b4b4.Te6edf3unread_rooms Tff7b72= Te6edf3hubTb4b4b4.Te6edf3unread_roomsTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3rTb4b4b4) Tb4b4b4=> Te6edf3r Tff7b72!== Te6edf3roomTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3hubTb4b4b4.Te6edf3unread_counts Tff7b72&& Tff7b72typeof Te6edf3hubTb4b4b4.Te6edf3unread_counts Tff7b72=== Ta5d6ff"object"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3next Tff7b72= Tb4b4b4{ Tb4b4b4...Te6edf3hubTb4b4b4.Te6edf3unread_counts Tb4b4b4}Tb4b4b4;
Tff7b72delete Te6edf3nextTb4b4b4[Te6edf3roomTb4b4b4]Tb4b4b4;
Te6edf3hubTb4b4b4.Te6edf3unread_counts Tff7b72= Te6edf3nextTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3hubTb4b4b4.Te6edf3total_unread Tff7b72=== Ta5d6ff"number"Tb4b4b4) Tb4b4b4{
Te6edf3hubTb4b4b4.Te6edf3total_unread Tff7b72= Tffa657ObjectTb4b4b4.Te6edf3valuesTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3unread_counts Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4)Tb4b4b4.Te6edf3reduceTb4b4b4(Tb4b4b4(Te6edf3sumTb4b4b4, Te6edf3nTb4b4b4) Tb4b4b4=> Te6edf3sum Tff7b72+ Tb4b4b4(Tffa657NumberTb4b4b4(Te6edf3nTb4b4b4) Tff7b72|| T79c0ff0Tb4b4b4)Tb4b4b4, T79c0ff0Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3updateUnreadBadgeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3markRoomReadTb4b4b4(Te6edf3hubHashTb4b4b4, Te6edf3roomTb4b4b4, Tb4b4b4{ Te6edf3refreshHubs Tff7b72= Tff7b72false Tb4b4b4} Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubHash Tff7b72|| Tff7b72!Te6edf3roomTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3clearLocalRoomUnreadTb4b4b4(Te6edf3hubHashTb4b4b4, Te6edf3roomTb4b4b4)Tb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Te6edf3hubHashTffd700}Ta5d6ff/rooms/Tffd700${Tff7b72thisTb4b4b4.Te6edf3encodeRoomTb4b4b4(Te6edf3roomTb4b4b4)Tffd700}Ta5d6ff/readTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// GET messages already marks active/read on the server. Ignore duplicate failures.
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3refreshHubsTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Keep dismiss sticky if a concurrent hubs fetch still had the old unread.
Tff7b72thisTb4b4b4.Te6edf3clearLocalRoomUnreadTb4b4b4(Te6edf3hubHashTb4b4b4, Te6edf3roomTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3updateUnreadBadgeTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3loadPreviousMessagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3isLoadingPrevious Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3beforeSeq Tff7b72= Tff7b72thisTb4b4b4.Te6edf3oldestLoadedSeqTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3beforeSeq Tff7b72=== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3seq Tff7b72= Tff7b72thisTb4b4b4.Te6edf3roomSelectSequenceTb4b4b4;
Tff7b72const Te6edf3hubHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedHubHashTb4b4b4;
Tff7b72const Te6edf3room Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3loadPreviousInFlight Tff7b72+= T79c0ff1Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingPrevious Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Te6edf3hubHashTffd700}Ta5d6ff/rooms/Tffd700${Tff7b72thisTb4b4b4.Te6edf3encodeRoomTb4b4b4(Te6edf3roomTb4b4b4)Tffd700}Ta5d6ff/messagesTa5d6ff`Tb4b4b4,
Tb4b4b4{ Te6edf3paramsTff7b72: Tb4b4b4{ Te6edf3limitTff7b72: Te6edf3RELAY_MESSAGES_PREVIOUS_PAGE_SIZETb4b4b4, Te6edf3before_seqTff7b72: Te6edf3beforeSeq Tb4b4b4} Tb4b4b4}
Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3seq Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3roomSelectSequence Tff7b72|| Te6edf3hubHash Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72|| Te6edf3room Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3older Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3messages Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72= Tffa657BooleanTb4b4b4(Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3has_moreTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3olderTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3existingSeqs Tff7b72= Tff7b72new Tffa657SetTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3messagesTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3mTb4b4b4) Tb4b4b4=> Te6edf3m Tff7b72&& Te6edf3mTb4b4b4.Te6edf3seq Tff7b72!= Tff7b72nullTb4b4b4)Tb4b4b4.Te6edf3mapTb4b4b4(Tb4b4b4(Te6edf3mTb4b4b4) Tb4b4b4=> Te6edf3mTb4b4b4.Te6edf3seqTb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3uniqueOlder Tff7b72= Te6edf3olderTb4b4b4.Te6edf3filterTb4b4b4(Tb4b4b4(Te6edf3mTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3mTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3mTb4b4b4.Te6edf3seq Tff7b72!= Tff7b72null Tff7b72&& Te6edf3existingSeqsTb4b4b4.Te6edf3hasTb4b4b4(Te6edf3mTb4b4b4.Te6edf3seqTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72!Te6edf3relayMessageAlreadyPresentTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3messagesTb4b4b4, Te6edf3mTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3uniqueOlderTb4b4b4.Te6edf3length Tff7b72=== T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3scrollEl Tff7b72= Tff7b72thisTb4b4b4.Te6edf3useVirtualMessageList Tff7b72? Tff7b72null Tff7b72: Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messageListTb4b4b4;
Tff7b72const Te6edf3prevScrollHeight Tff7b72= Te6edf3scrollEl Tff7b72? Te6edf3scrollElTb4b4b4.Te6edf3scrollHeight Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72const Te6edf3prevScrollTop Tff7b72= Te6edf3scrollEl Tff7b72? Te6edf3scrollElTb4b4b4.Te6edf3scrollTop Tff7b72: T79c0ff0Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messages Tff7b72= Tb4b4b4[Tb4b4b4...Te6edf3uniqueOlderTb4b4b4, Tb4b4b4...Tff7b72thisTb4b4b4.Te6edf3messagesTb4b4b4]Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3scrollElTb4b4b4) Tb4b4b4{
Te6edf3nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72const Te6edf3delta Tff7b72= Te6edf3scrollElTb4b4b4.Te6edf3scrollHeight Tff7b72- Te6edf3prevScrollHeightTb4b4b4;
Te6edf3scrollElTb4b4b4.Te6edf3scrollTop Tff7b72= Te6edf3prevScrollTop Tff7b72+ Te6edf3deltaTb4b4b4;
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hasMorePrevious Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadPreviousInFlight Tff7b72= Tffa657MathTb4b4b4.Te6edf3maxTb4b4b4(T79c0ff0Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3loadPreviousInFlight Tff7b72- T79c0ff1Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3isLoadingPrevious Tff7b72= Tff7b72thisTb4b4b4.Te6edf3loadPreviousInFlight Tff7b72> T79c0ff0Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onMessagesScrollTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3el Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3el Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3isLoadingPrevious Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3hasMorePreviousTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3elTb4b4b4.Te6edf3scrollTop Tff7b72<= Te6edf3LOAD_PREVIOUS_SCROLL_EDGE_PXTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3loadPreviousMessagesTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3getMessagesScrollElementTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messageList Tff7b72?? Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3refreshMembersTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedHubHashTffd700}Ta5d6ff/rooms/Tffd700${Tff7b72thisTb4b4b4.Te6edf3encodeRoomTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4)Tffd700}Ta5d6ff/messagesTa5d6ff`
Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3members Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3members Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// ignore member refresh failures
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3scrollToBottomTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3nextTickTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3useVirtualMessageList Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messageListVirtualTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messageListVirtualTb4b4b4.Te6edf3scrollToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3el Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3messageListTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3elTb4b4b4) Tb4b4b4{
Te6edf3elTb4b4b4.Te6edf3scrollTop Tff7b72= Te6edf3elTb4b4b4.Te6edf3scrollHeightTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3sendMessageTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3text Tff7b72= Tff7b72thisTb4b4b4.Te6edf3composerTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3text Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedHub Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3isAction Tff7b72= Te6edf3textTb4b4b4.Te6edf3startsWithTb4b4b4(Ta5d6ff"/me "Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3payload Tff7b72= Te6edf3isAction Tff7b72? Tb4b4b4{ Te6edf3textTff7b72: Te6edf3textTb4b4b4.Te6edf3sliceTb4b4b4(T79c0ff4Tb4b4b4)Tb4b4b4, Te6edf3actionTff7b72: Tff7b72true Tb4b4b4} Tff7b72: Tb4b4b4{ Te6edf3text Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3sending Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedHubHashTffd700}Ta5d6ff/rooms/Tffd700${Tff7b72thisTb4b4b4.Te6edf3encodeRoomTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4)Tffd700}Ta5d6ff/messagesTa5d6ff`Tb4b4b4,
Te6edf3payload
Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3composer Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.send_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3sending Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3joinRoomTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3room Tff7b72= Tff7b72thisTb4b4b4.Te6edf3joinRoomNameTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3roomTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.room_required"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3key Tff7b72= Tff7b72thisTb4b4b4.Te6edf3joinRoomKeyTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72nullTb4b4b4;
Tff7b72const Te6edf3joined Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3joinRoomByNameTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomTb4b4b4, Tb4b4b4{ Te6edf3key Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3joinedTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3joinRoomName Tff7b72= Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3joinRoomKey Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3joinAvailableRoomTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomTb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3joinRoomByNameTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3isBadKeyErrorTextTb4b4b4(Te6edf3textTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72typeof Te6edf3text Tff7b72!== Ta5d6ff"string"Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3lowered Tff7b72= Te6edf3textTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
T8b949e// Match backend: require "bad key" so mode hints like "enable +k" do not wipe storage.
Tff7b72return Te6edf3loweredTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"bad key (+k)"Tb4b4b4) Tff7b72|| Te6edf3loweredTb4b4b4.Te6edf3includesTb4b4b4(Ta5d6ff"bad key"Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3promptForRoomKeyTb4b4b4(Te6edf3roomTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3entered Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3promptTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.room_key_prompt"Tb4b4b4, Tb4b4b4{ Te6edf3roomTff7b72: Te6edf3room Tff7b72|| Ta5d6ff"" Tb4b4b4}Tb4b4b4)Tb4b4b4, Ta5d6ff""Tb4b4b4, Tb4b4b4{
Te6edf3inputTypeTff7b72: Ta5d6ff"password"Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3entered Tff7b72== Tff7b72nullTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72nullTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3key Tff7b72= Tffa657StringTb4b4b4(Te6edf3enteredTb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Te6edf3key Tff7b72|| Tff7b72nullTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3handleBadKeyErrorTb4b4b4(Te6edf3hubHashTb4b4b4, Te6edf3roomTb4b4b4, Te6edf3messageTextTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3roomName Tff7b72= Tb4b4b4(Te6edf3room Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4.Te6edf3toLowerCaseTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubHash Tff7b72|| Tff7b72!Te6edf3roomNameTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3messageText Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.bad_key"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3flightKey Tff7b72= Ta5d6ff`Tffd700${Te6edf3hubHashTffd700}Ta5d6ff:Tffd700${Te6edf3roomNameTffd700}Ta5d6ff`Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3badKeyPromptInFlight Tff7b72=== Te6edf3flightKeyTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3badKeyPromptInFlight Tff7b72= Te6edf3flightKeyTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.bad_key"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4.Te6edf3hub_hash Tff7b72=== Te6edf3hubHashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Te6edf3hubHashTffd700}Ta5d6ff/rooms/Tffd700${Tff7b72thisTb4b4b4.Te6edf3encodeRoomTb4b4b4(Te6edf3roomNameTb4b4b4)Tffd700}Ta5d6ff/keyTa5d6ff`Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// Stored key may already be gone after the hub ERROR path.
Tb4b4b4}
Tff7b72const Te6edf3key Tff7b72= Tff7b72await Tff7b72thisTb4b4b4.Te6edf3promptForRoomKeyTb4b4b4(Te6edf3roomNameTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3keyTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3joinRoomByNameTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomNameTb4b4b4, Tb4b4b4{ Te6edf3keyTb4b4b4, Te6edf3promptedTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3badKeyPromptInFlight Tff7b72=== Te6edf3flightKeyTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3badKeyPromptInFlight Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3joinRoomByNameTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomTb4b4b4, Tb4b4b4{ Te6edf3key Tff7b72= Tff7b72nullTb4b4b4, Te6edf3prompted Tff7b72= Tff7b72false Tb4b4b4} Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3payload Tff7b72= Tb4b4b4{ Te6edf3roomTb4b4b4, Te6edf3rememberTff7b72: Tff7b72true Tb4b4b4}Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3keyTb4b4b4) Tb4b4b4{
Te6edf3payloadTb4b4b4.Te6edf3key Tff7b72= Te6edf3keyTb4b4b4;
Tb4b4b4}
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Te6edf3hubTb4b4b4.Te6edf3hub_hashTffd700}Ta5d6ff/roomsTa5d6ff`Tb4b4b4, Te6edf3payloadTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3hubTb4b4b4.Te6edf3connected Tff7b72|| Te6edf3hubTb4b4b4.Te6edf3status Tff7b72=== T79c0ff2Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.join_requested"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.joined_room"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3message Tff7b72= Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3prompted Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3isBadKeyErrorTextTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3handleBadKeyErrorTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4, Te6edf3roomTb4b4b4, Te6edf3messageTb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3messageTb4b4b4)Tb4b4b4;
Tff7b72return Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3leaveRoomTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedHub Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3confirmed Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmCustomTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.leave_room_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3confirmedTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3room Tff7b72= Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedHubHashTffd700}Ta5d6ff/rooms/Tffd700${Tff7b72thisTb4b4b4.Te6edf3encodeRoomTb4b4b4(Te6edf3roomTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedRoom Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messages Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3members Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.left_room"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3clearMessagesTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedHub Tff7b72|| Tff7b72!Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3confirmed Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.clear_messages_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3confirmedTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(
Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Tff7b72thisTb4b4b4.Te6edf3selectedHubHashTffd700}Ta5d6ff/rooms/Tffd700${Tff7b72thisTb4b4b4.Te6edf3encodeRoomTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4)Tffd700}Ta5d6ff/messagesTa5d6ff`
Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messages Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.messages_cleared"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3connectHubTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Te6edf3hubTb4b4b4.Te6edf3hub_hashTffd700}Ta5d6ff/connectTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3disconnectHubTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Te6edf3hubTb4b4b4.Te6edf3hub_hashTffd700}Ta5d6ff/disconnectTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3openAddHubTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3addHubForm Tff7b72= Tb4b4b4{ Te6edf3hub_hashTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3nameTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3dest_nameTff7b72: Ta5d6ff"" Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3addHubAdvancedOpen Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showAddHub Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3addHubTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3hubHash Tff7b72= Tff7b72thisTb4b4b4.Te6edf3addHubFormTb4b4b4.Te6edf3hub_hashTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubHashTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.invalid_hub_hash"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rrc/hubs"Tb4b4b4, Tb4b4b4{
Te6edf3hub_hashTff7b72: Te6edf3hubHashTb4b4b4,
Te6edf3nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3addHubFormTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72undefinedTb4b4b4,
Te6edf3dest_nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3addHubFormTb4b4b4.Te6edf3dest_nameTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72undefinedTb4b4b4,
Te6edf3connectTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showAddHub Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hub_added"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3added Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3addedTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3addedTb4b4b4.Te6edf3hub_hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3addedTb4b4b4.Te6edf3hub_hashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.invalid_hub_hash"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3removeHubTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3confirmed Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.remove_hub_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3confirmedTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Te6edf3hubTb4b4b4.Te6edf3hub_hashTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72=== Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3selectedRoom Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3messages Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3members Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hub_removed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3openSettingsTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3settingsHubHash Tff7b72= Te6edf3hubTb4b4b4.Te6edf3hub_hashTb4b4b4;
Tff7b72const Te6edf3defaultName Tff7b72= Te6edf3hubTb4b4b4.Te6edf3hub_name_announced Tff7b72|| Te6edf3hubTb4b4b4.Te6edf3name Tff7b72|| Ta5d6ff""Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3settingsForm Tff7b72= Tb4b4b4{
Te6edf3auto_reconnectTff7b72: Te6edf3hubTb4b4b4.Te6edf3auto_reconnect Tff7b72!== Tff7b72falseTb4b4b4,
Te6edf3auto_listTff7b72: Tff7b72!Tff7b72!Te6edf3hubTb4b4b4.Te6edf3auto_listTb4b4b4,
Te6edf3auto_whoTff7b72: Tff7b72!Tff7b72!Te6edf3hubTb4b4b4.Te6edf3auto_whoTb4b4b4,
Te6edf3nickTff7b72: Te6edf3hubTb4b4b4.Te6edf3nick_override Tff7b72|| Ta5d6ff""Tb4b4b4,
Te6edf3custom_nameTff7b72: Te6edf3hubTb4b4b4.Te6edf3custom_name Tff7b72|| Ta5d6ff""Tb4b4b4,
Te6edf3default_nameTff7b72: Te6edf3defaultNameTb4b4b4,
Te6edf3has_custom_nameTff7b72: Tffa657BooleanTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3custom_nameTb4b4b4)Tb4b4b4,
Te6edf3hub_iconTff7b72: Te6edf3normalizeMdiIconNameTb4b4b4(Te6edf3hubTb4b4b4.Te6edf3hub_iconTb4b4b4)Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showSettings Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3openIconPickerTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3showIconPicker Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onHubIconPickedTb4b4b4(Te6edf3iconNameTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3settingsFormTb4b4b4.Te6edf3hub_icon Tff7b72= Te6edf3normalizeMdiIconNameTb4b4b4(Te6edf3iconNameTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3saveSettingsTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3payload Tff7b72= Tb4b4b4{
Te6edf3auto_reconnectTff7b72: Tff7b72thisTb4b4b4.Te6edf3settingsFormTb4b4b4.Te6edf3auto_reconnectTb4b4b4,
Te6edf3auto_listTff7b72: Tff7b72thisTb4b4b4.Te6edf3settingsFormTb4b4b4.Te6edf3auto_listTb4b4b4,
Te6edf3auto_whoTff7b72: Tff7b72thisTb4b4b4.Te6edf3settingsFormTb4b4b4.Te6edf3auto_whoTb4b4b4,
Te6edf3nickTff7b72: Tff7b72thisTb4b4b4.Te6edf3settingsFormTb4b4b4.Te6edf3nickTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3trimmed Tff7b72= Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3settingsFormTb4b4b4.Te6edf3custom_name Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3trimmed Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3settingsFormTb4b4b4.Te6edf3has_custom_nameTb4b4b4) Tb4b4b4{
Te6edf3payloadTb4b4b4.Te6edf3revert_custom_name Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3trimmedTb4b4b4) Tb4b4b4{
Te6edf3payloadTb4b4b4.Te6edf3custom_name Tff7b72= Te6edf3trimmedTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3icon Tff7b72= Te6edf3normalizeMdiIconNameTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3settingsFormTb4b4b4.Te6edf3hub_iconTb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hadIcon Tff7b72= Tffa657BooleanTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3settingsHubTff7b72?Tb4b4b4.Te6edf3hub_iconTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3icon Tff7b72&& Te6edf3hadIconTb4b4b4) Tb4b4b4{
Te6edf3payloadTb4b4b4.Te6edf3revert_hub_icon Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3iconTb4b4b4) Tb4b4b4{
Te6edf3payloadTb4b4b4.Te6edf3hub_icon Tff7b72= Te6edf3iconTb4b4b4;
Tb4b4b4}
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3patchTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/hubs/Tffd700${Tff7b72thisTb4b4b4.Te6edf3settingsHubHashTffd700}Ta5d6ff`Tb4b4b4, Te6edf3payloadTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showSettings Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.settings_saved"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3isHubAddedTb4b4b4(Te6edf3destinationHashTb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4.Te6edf3someTb4b4b4(Tb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4=> Te6edf3hubTb4b4b4.Te6edf3hub_hash Tff7b72=== Te6edf3destinationHashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3nodeNameTb4b4b4(Te6edf3nodeTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3custom_display_nameTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3nodeTb4b4b4.Te6edf3custom_display_nameTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3display_name Tff7b72&& Te6edf3nodeTb4b4b4.Te6edf3display_name Tff7b72!== Ta5d6ff"Anonymous Peer"Tb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3nodeTb4b4b4.Te6edf3display_nameTb4b4b4;
Tb4b4b4}
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3formatHashTb4b4b4(Te6edf3nodeTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3fetchDiscoveredTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/announces"Tb4b4b4, Tb4b4b4{
Te6edf3paramsTff7b72: Tb4b4b4{
Te6edf3aspectTff7b72: Ta5d6ff"rrc.hub"Tb4b4b4,
Te6edf3limitTff7b72: T79c0ff200Tb4b4b4,
Te6edf3searchTff7b72: Tff7b72thisTb4b4b4.Te6edf3discoverySearch Tff7b72|| Tff7b72undefinedTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3discovered Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3announces Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3discovered Tff7b72= Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3refreshDiscoveredTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3discoveryLoading Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchDiscoveredTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.discovery_refreshed"Tb4b4b4) Tff7b72+ Ta5d6ff" (" Tff7b72+ Tff7b72thisTb4b4b4.Te6edf3discoveredTb4b4b4.Te6edf3length Tff7b72+ Ta5d6ff")"Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3discoveryLoading Tff7b72= Tff7b72falseTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3onDiscoverySearchTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoverySearchTimerTb4b4b4) Tb4b4b4{
Te6edf3clearTimeoutTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3discoverySearchTimerTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3discoverySearchTimer Tff7b72= Te6edf3setTimeoutTb4b4b4(Tb4b4b4(Tb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fetchDiscoveredTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4, T79c0ff300Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3upsertDiscoveredTb4b4b4(Te6edf3announceTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3index Tff7b72= Tff7b72thisTb4b4b4.Te6edf3discoveredTb4b4b4.Te6edf3findIndexTb4b4b4(Tb4b4b4(Te6edf3nTb4b4b4) Tb4b4b4=> Te6edf3nTb4b4b4.Te6edf3destination_hash Tff7b72=== Te6edf3announceTb4b4b4.Te6edf3destination_hashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3index Tff7b72>= T79c0ff0Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3discoveredTb4b4b4.Te6edf3spliceTb4b4b4(Te6edf3indexTb4b4b4, T79c0ff1Tb4b4b4, Te6edf3announceTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3discoveredTb4b4b4.Te6edf3unshiftTb4b4b4(Te6edf3announceTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3addFromDiscoveryTb4b4b4(Te6edf3nodeTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rrc/hubs"Tb4b4b4, Tb4b4b4{
Te6edf3hub_hashTff7b72: Te6edf3nodeTb4b4b4.Te6edf3destination_hashTb4b4b4,
Te6edf3nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3nodeNameTb4b4b4(Te6edf3nodeTb4b4b4)Tb4b4b4,
Te6edf3dest_nameTff7b72: Ta5d6ff"rrc.hub"Tb4b4b4,
Te6edf3connectTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Ta5d6ff"relay_chat.discovery_added"Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3added Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3addedTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3addedTb4b4b4.Te6edf3hub_hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3addedTb4b4b4.Te6edf3hub_hashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3view Tff7b72= Ta5d6ff"chat"Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3openDiscoveredTb4b4b4(Te6edf3nodeTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3nodeTb4b4b4.Te6edf3destination_hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3nodeTb4b4b4.Te6edf3destination_hashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3view Tff7b72= Ta5d6ff"chat"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3selectHostViewTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3view Tff7b72= Ta5d6ff"host"Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3fetchServersTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/rrc/servers"Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3hubs Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3hubs Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tff7b72for Tb4b4b4(Tff7b72const Te6edf3hub Tff7b72of Te6edf3hubsTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Tff7b72thisTb4b4b4.Te6edf3roomFormsTb4b4b4[Te6edf3hubTb4b4b4.Te6edf3idTb4b4b4]Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3roomFormsTb4b4b4[Te6edf3hubTb4b4b4.Te6edf3idTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3topicTff7b72: Ta5d6ff""Tb4b4b4, Tff7b72privateTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3serverHubs Tff7b72= Te6edf3hubsTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostUptimeAnchorMs Tff7b72= Tffa657DateTb4b4b4.Te6edf3nowTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3hostUptimeTick Tff7b72= T79c0ff0Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// relay chat hosting may be unavailable for this identity
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3openCreateHubTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3createHubForm Tff7b72= Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3greetingTff7b72: Ta5d6ff""Tb4b4b4,
Te6edf3announceTff7b72: Tff7b72trueTb4b4b4,
Te6edf3announce_interval_secondsTff7b72: Te6edf3DEFAULT_ANNOUNCE_INTERVAL_SECONDSTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3createAnnounceIntervalDraft Tff7b72= Tff7b72nullTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showCreateHub Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3createServerHubTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rrc/servers"Tb4b4b4, Tb4b4b4{
Te6edf3nameTff7b72: Tff7b72thisTb4b4b4.Te6edf3createHubFormTb4b4b4.Te6edf3nameTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72undefinedTb4b4b4,
Te6edf3greetingTff7b72: Tff7b72thisTb4b4b4.Te6edf3createHubFormTb4b4b4.Te6edf3greetingTb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72undefinedTb4b4b4,
Te6edf3announceTff7b72: Tff7b72thisTb4b4b4.Te6edf3createHubFormTb4b4b4.Te6edf3announceTb4b4b4,
Te6edf3announce_interval_secondsTff7b72: Tff7b72thisTb4b4b4.Te6edf3createHubFormTb4b4b4.Te6edf3announce_interval_secondsTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3showCreateHub Tff7b72= Tff7b72falseTb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_hub_created"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3deleteServerHubTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3confirmed Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_delete_hub_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3confirmedTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/servers/Tffd700${Te6edf3hubTb4b4b4.Te6edf3idTffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_hub_deleted"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3startServerHubTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/servers/Tffd700${Te6edf3hubTb4b4b4.Te6edf3idTffd700}Ta5d6ff/startTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3stopServerHubTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/servers/Tffd700${Te6edf3hubTb4b4b4.Te6edf3idTffd700}Ta5d6ff/stopTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3announceServerHubTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/servers/Tffd700${Te6edf3hubTb4b4b4.Te6edf3idTffd700}Ta5d6ff/announceTa5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_announced"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3createRoomTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3form Tff7b72= Tff7b72thisTb4b4b4.Te6edf3roomFormsTb4b4b4[Te6edf3hubTb4b4b4.Te6edf3idTb4b4b4] Tff7b72|| Tb4b4b4{Tb4b4b4}Tb4b4b4;
Tff7b72const Te6edf3name Tff7b72= Tb4b4b4(Te6edf3formTb4b4b4.Te6edf3name Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3nameTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.room_required"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/servers/Tffd700${Te6edf3hubTb4b4b4.Te6edf3idTffd700}Ta5d6ff/roomsTa5d6ff`Tb4b4b4, Tb4b4b4{
Te6edf3nameTb4b4b4,
Te6edf3topicTff7b72: Tb4b4b4(Te6edf3formTb4b4b4.Te6edf3topic Tff7b72|| Ta5d6ff""Tb4b4b4)Tb4b4b4.Te6edf3trimTb4b4b4(Tb4b4b4) Tff7b72|| Tff7b72undefinedTb4b4b4,
Tff7b72privateTff7b72: Tff7b72!Tff7b72!Te6edf3formTb4b4b4.Tff7b72privateTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3roomFormsTb4b4b4[Te6edf3hubTb4b4b4.Te6edf3idTb4b4b4] Tff7b72= Tb4b4b4{ Te6edf3nameTff7b72: Ta5d6ff""Tb4b4b4, Te6edf3topicTff7b72: Ta5d6ff""Tb4b4b4, Tff7b72privateTff7b72: Tff7b72false Tb4b4b4}Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_room_created"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3deleteRoomTb4b4b4(Te6edf3hubTb4b4b4, Te6edf3roomTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3confirmed Tff7b72= Tff7b72await Te6edf3DialogUtilsTb4b4b4.Te6edf3confirmTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_delete_room_confirm"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3confirmedTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/rrc/servers/Tffd700${Te6edf3hubTb4b4b4.Te6edf3idTffd700}Ta5d6ff/rooms/Tffd700${Tff7b72thisTb4b4b4.Te6edf3encodeRoomTb4b4b4(Te6edf3roomTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_room_deleted"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3openHostModerationTb4b4b4(Te6edf3hubTb4b4b4, Tb4b4b4{ Te6edf3tab Tff7b72= Ta5d6ff"rooms"Tb4b4b4, Te6edf3room Tff7b72= Tff7b72null Tb4b4b4} Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3tab Tff7b72=== Ta5d6ff"members" Tff7b72&& Tff7b72!Te6edf3hubTb4b4b4.Te6edf3runningTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_hub_not_running"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3hostModeration Tff7b72= Tb4b4b4{
Te6edf3hubTb4b4b4,
Te6edf3tabTff7b72: Te6edf3tab Tff7b72=== Ta5d6ff"members" Tff7b72? Ta5d6ff"members" Tff7b72: Ta5d6ff"rooms"Tb4b4b4,
Te6edf3roomTff7b72: Te6edf3room Tff7b72|| Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3closeHostModerationTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3hostModeration Tff7b72= Tb4b4b4{
Te6edf3hubTff7b72: Tff7b72nullTb4b4b4,
Te6edf3tabTff7b72: Ta5d6ff"rooms"Tb4b4b4,
Te6edf3roomTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3copyHashTb4b4b4(Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3hashTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.hash_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
T8b949e// clipboard may be unavailable
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3shareHubLinkTb4b4b4(Tb4b4b4{ Te6edf3hub_hashTb4b4b4, Te6edf3name Tff7b72= Ta5d6ff""Tb4b4b4, Te6edf3room Tff7b72= Ta5d6ff""Tb4b4b4, Te6edf3aspect Tff7b72= Ta5d6ff"" Tb4b4b4} Tff7b72= Tb4b4b4{Tb4b4b4}Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3text Tff7b72= Te6edf3buildRelayShareMessageTb4b4b4(Tb4b4b4{
Te6edf3hubTff7b72: Te6edf3hub_hashTb4b4b4,
Te6edf3nameTb4b4b4,
Te6edf3roomTb4b4b4,
Te6edf3aspectTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3textTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72await Te6edf3navigatorTb4b4b4.Te6edf3clipboardTb4b4b4.Te6edf3writeTextTb4b4b4(Te6edf3textTb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.share_copied"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3joinHostedAsClientTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubTff7b72?Tb4b4b4.Te6edf3dest_hashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/rrc/hubs"Tb4b4b4, Tb4b4b4{
Te6edf3hub_hashTff7b72: Te6edf3hubTb4b4b4.Te6edf3dest_hashTb4b4b4,
Te6edf3nameTff7b72: Te6edf3hubTb4b4b4.Te6edf3name Tff7b72|| Tff7b72undefinedTb4b4b4,
Te6edf3dest_nameTff7b72: Ta5d6ff"rrc.hub"Tb4b4b4,
Te6edf3connectTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.host_joined_as_client"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72const Te6edf3added Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3hubTb4b4b4;
Tff7b72if Tb4b4b4(Te6edf3addedTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3addedTb4b4b4.Te6edf3hub_hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3addedTb4b4b4.Te6edf3hub_hashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72= Te6edf3hubTb4b4b4.Te6edf3dest_hashTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3expandedHubsTb4b4b4[Te6edf3hubTb4b4b4.Te6edf3dest_hashTb4b4b4] Tff7b72= Tff7b72trueTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3view Tff7b72= Ta5d6ff"chat"Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3eTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(Te6edf3eTb4b4b4.Te6edf3responseTff7b72?Tb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.action_failed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3leaveHostedAsClientTb4b4b4(Te6edf3hubTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3hubTff7b72?Tb4b4b4.Te6edf3dest_hashTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72const Te6edf3clientHub Tff7b72= Tff7b72thisTb4b4b4.Te6edf3hubsTb4b4b4.Te6edf3findTb4b4b4(Tb4b4b4(Te6edf3hTb4b4b4) Tb4b4b4=> Te6edf3hTb4b4b4.Te6edf3hub_hash Tff7b72=== Te6edf3hubTb4b4b4.Te6edf3dest_hashTb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3clientHubTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3removeHubTb4b4b4(Te6edf3clientHubTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3onWebsocketMessageTb4b4b4(Te6edf3messageTb4b4b4) Tb4b4b4{
Tff7b72let Te6edf3jsonTb4b4b4;
Tff7b72try Tb4b4b4{
Te6edf3json Tff7b72= Tffa657JSONTb4b4b4.Te6edf3parseTb4b4b4(Te6edf3messageTb4b4b4.Te6edf3dataTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"rrc.change"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"rrc.message"Tb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3message Tff7b72&& Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3kind Tff7b72=== Ta5d6ff"error" Tff7b72&& Tff7b72thisTb4b4b4.Te6edf3isBadKeyErrorTextTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3textTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3handleBadKeyErrorTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3hub_hashTb4b4b4, Te6edf3jsonTb4b4b4.Te6edf3room Tff7b72|| Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3roomTb4b4b4, Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3textTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3hub_hash Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72&& Te6edf3jsonTb4b4b4.Te6edf3room Tff7b72=== Tff7b72thisTb4b4b4.Te6edf3selectedRoom Tff7b72&& Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3relayMessageAlreadyPresentTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3messagesTb4b4b4, Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3messagesTb4b4b4.Te6edf3pushTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3scrollToBottomTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3kind Tff7b72=== Ta5d6ff"system" Tff7b72|| Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3kind Tff7b72=== Ta5d6ff"notice"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3refreshMembersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
T8b949e// Chat is already open: dismiss unread/mention badge without waiting
T8b949e// for a later hub list refresh race.
Tff7b72thisTb4b4b4.Te6edf3markRoomReadTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3hub_hashTb4b4b4, Te6edf3jsonTb4b4b4.Te6edf3roomTb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3message Tff7b72&& Te6edf3jsonTb4b4b4.Te6edf3messageTb4b4b4.Te6edf3kind Tff7b72=== Ta5d6ff"msg"Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3onRelayPage Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3name Tff7b72=== Ta5d6ff"relay-chat" Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$routeTff7b72?Tb4b4b4.Te6edf3name Tff7b72=== Ta5d6ff"relay-chat-popout"Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3onRelayPage Tff7b72|| Te6edf3jsonTb4b4b4.Te6edf3hub_hash Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3selectedHubHash Tff7b72|| Te6edf3jsonTb4b4b4.Te6edf3room Tff7b72!== Tff7b72thisTb4b4b4.Te6edf3selectedRoomTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"relay_chat.new_message_toast"Tb4b4b4, Tb4b4b4{ Te6edf3roomTff7b72: Te6edf3jsonTb4b4b4.Te6edf3room Tff7b72|| Ta5d6ff"" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fetchHubsTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"rrc.server.change"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3fetchServersTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72else Tff7b72if Tb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3type Tff7b72=== Ta5d6ff"announce" Tff7b72&& Te6edf3jsonTb4b4b4.Te6edf3announce Tff7b72&& Te6edf3jsonTb4b4b4.Te6edf3announceTb4b4b4.Te6edf3aspect Tff7b72=== Ta5d6ff"rrc.hub"Tb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3upsertDiscoveredTb4b4b4(Te6edf3jsonTb4b4b4.Te6edf3announceTb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────